在ActiveMQ经纪人网络中进行负载均衡

时间:2017-02-28 14:30:34

标签: jms activemq load-balancing amqp

我们正在使用ActiveMQ并定义了一个代理网络(我们的测试设置中有2个)。我们已将代理配置为接受AMQP连接,并且我们已启用" updateClusterClients"和" rebalanceClusterClients"像这样:

<transportConnector name="amqp" uri="amqp+ssl://0.0.0.0:5673?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;transport.transformer=jms" updateClusterClients="true" rebalanceClusterClients="true"/>

此外,我们使用Qpid JMS构建客户端。已使用failover-url配置客户端。

客户可以很好地相互沟通。此外,当我停止其中一个经纪人时,他们会切换到剩下的经纪人。

但是,当我重新启动代理时,我原本预计会看到一些客户转移到新代理。不幸的是,我实际看到的是他们都与同一个经纪人保持联系。

他们没有重新平衡的原因可能是什么? 此外,我希望客户在最初连接时分布在两个经纪人身上。我有办法实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

ActiveMQ代理不会尝试重新平衡Broker网络中的AMQP客户端。可能有一种方法可以实现它,但它会对每个AMQP客户端的连接性质做出一些假设,例如它们都支持连接重定向这一事实,而这些重定向并非都是如此。

在定义更好的机制之前,客户端可以连接并宣传它愿意被重定向我不认为您会看到ActiveMQ强行断开AMQP客户端上的连接以重新平衡它们。

代理能够重新平衡OpenWire客户端,因为它知道与故障转移传输连接的OpenWire客户端将处理请求客户端离开的连接控制命令,其中未连接故障转移的客户端将忽略该命令。