共享节点智能队列

时间:2017-10-29 16:39:16

标签: data-structures apache-kafka activemq shared

我正在使用Java构建代理服务器。此应用程序部署在docker容器(多个实例)

以下是我正在处理的要求。

  1. 客户端向我的代理服务器发送http请求
  2. 代理服务器按照收到的顺序将这些请求转发到目标节点服务器。
  3. 当目的地无法访问时,代理服务器会存储这些请求,并在将来可用时转发它们。
  4. 同样,当请求失败时,将在" X"之后重新尝试请求。时间
  5. 我实现了一个节点智能队列植入(哈希映射 - (密钥)节点名称 - (值)可达性状态+按照收到的顺序请求队列。)

    当只有一个实例时,上述解决方案效果很好。但我想知道在有多个实例时如何解决这个问题?是否有任何可用于解决此问题的共享数据结构。 ActiveMQ,Redis,Kafka都是那种(我是共享内存/处理的新手)。

    任何帮助将不胜感激。

    提前致谢。 阿贾伊

1 个答案:

答案 0 :(得分:0)

基于Jetty的Kafka有一个开源REST代理,您可以从中获得一些实现方法。

https://github.com/confluentinc/kafka-rest

此代理本身不存储消息,因为kafka集群高度可用于写入,并且通常至少有3个kafka节点可用于消息持久性。如果群集暂时无法写入,则可以将代理中的kafka客户端配置为重试。