JMS具有强制可扩展性(Active-Active -...- Active)和排序?

时间:2017-02-18 17:04:00

标签: jms message-queue

我正在寻找必须具备以下附加特征的JMS提供商:

  • 是多经纪人,所有经纪人必须活跃(没有单点故障)
    • 只有两台机器的可扩展性才足以满足我们的需求
  • 能够保证订购(如果1个生产者+ 1个消费者)

我们尝试过ActiveMQ 5.14,这似乎可以满足我们的要求,但只有在单独考虑时:

  • " ActiveMQ:为了提供大型消息传递结构的大规模可扩展性,您通常希望允许许多代理连接到一个网络中,以便您可以拥有所有逻辑上连接在一起的客户端 - 并运行根据您的客户端数量和网络拓扑,您需要尽可能多的消息代理。 ...如果您使用的是客户端/服务器或集线器/分支样式拓扑,那么您连接的代理将成为单点故障,这是需要网络(或集群)代理的另一个原因所以您可以在任何特定经纪人,机器或子网的故障中幸存下来"
  • "订购:不保留总消息排序与经纪人网络。总订购适用于单个消费者,但networkBridge引入了第二个消费者。此外,网桥消费者通过producer.send(..)转发消息,因此它们从转发代理的队列头部转到目标上的队列尾部。如果单个消费者在网络经纪人之间移动,如果所有消息始终跟随消费者,则可以保留总订单,但是这可能难以通过大量消息积压来保证。"

1 个答案:

答案 0 :(得分:0)

使用Kafka,下一代分布式消息传递,因为它易于扩展,提供高吞吐量,可以将消息持久保存到磁盘并确保有序性。

使用kafka,您可以增加节点数以阻止节点故障。如果您无法删除JMS传输消息,如图所示

JMS Producer(s) -> Kafka Cluster -> JMS Subscriber (s)

请参阅Connection between Apache Kafka and JMS