我们正在使用ActiveMQ并定义了一个代理网络(我们的测试设置中有2个)。我们已将代理配置为接受AMQP连接,并且我们已启用" updateClusterClients"和" rebalanceClusterClients"像这样:
<transportConnector name="amqp" uri="amqp+ssl://0.0.0.0:5673?maximumConnections=1000&wireFormat.maxFrameSize=104857600&transport.transformer=jms" updateClusterClients="true" rebalanceClusterClients="true"/>
此外,我们使用Qpid JMS构建客户端。已使用failover-url配置客户端。
客户可以很好地相互沟通。此外,当我停止其中一个经纪人时,他们会切换到剩下的经纪人。
但是,当我重新启动代理时,我原本预计会看到一些客户转移到新代理。不幸的是,我实际看到的是他们都与同一个经纪人保持联系。
他们没有重新平衡的原因可能是什么? 此外,我希望客户在最初连接时分布在两个经纪人身上。我有办法实现这个目标吗?
答案 0 :(得分:1)
ActiveMQ代理不会尝试重新平衡Broker网络中的AMQP客户端。可能有一种方法可以实现它,但它会对每个AMQP客户端的连接性质做出一些假设,例如它们都支持连接重定向这一事实,而这些重定向并非都是如此。
在定义更好的机制之前,客户端可以连接并宣传它愿意被重定向我不认为您会看到ActiveMQ强行断开AMQP客户端上的连接以重新平衡它们。
代理能够重新平衡OpenWire客户端,因为它知道与故障转移传输连接的OpenWire客户端将处理请求客户端离开的连接控制命令,其中未连接故障转移的客户端将忽略该命令。