消息负载平衡的客户端配置

Client Configuration for Message Load Balancing

我们在集群模式下有 6 个 AMQ 实例(3 个主实例 + 3 个从实例),每个都在不同的机器上。每个实例都有 queue/ExampleQueue。我们希望实现负载平衡,因为我们有大量消息要发送到 queue/ExampleQueue.

This example 仅从一个节点使用 ConnectionFactory

在 Spring 中,我们通过配置所有 6 个 Node-ConnectionFactory-URLs 来利用 ConnectionFactory

connectionFactory.ConnectionFactory: (tcp://vbox:61616,tcp://vbox:61716,tcp://vbox:61816,tcp://vbox:62616,tcp://vbox:62716,tcp://vbox:62816)?type=CF...

如果我们只配置1个master节点会怎么样:

connectionFactory.ConnectionFactory: (tcp://vbox:61616)?type=CF...
  1. 这 1 个主节点会进行循环负载平衡吗?
  2. 是否意味着在多个代理的情况下 URL,往往会使用超过 1 个 ConnectionFactory?在我们的例子中,这将涉及 6 个 ConnectionFactory 实例。他们每个人也会有自己的拓扑实例吗?是否有必要同时放置 3 个从属 URl?如果我们设置 useTopologyuseTopologyForLoadBalancing=false 会发生什么?

在同一个 URL 中列出多个代理主要在建立 初始 连接时有用。将尝试列表中的每个代理,直到成功建立连接。然后,一旦客户端连接到集群中的任何节点,它就会收到整个集群的拓扑结构,并且与同一 ConnectionFactory 实例建立的任何其他连接都将以基于循环的方式分布在集群中收到的拓扑。

仅在 URL 中列出一个代理的缺点是,如果该代理已关闭,则客户端将根本无法连接到任何东西。