2017-02-28 65 views
2

我们使用ActiveMQ并定义了代理网络(在我们的测试设置中为2)。我们已经配置了中间商接AMQP连接,我们必须使“updateClusterClients”和“rebalanceClusterClients”像这样:ActiveMQ代理网络中的负载平衡

<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建立我们的客户。客户端已使用故障转移URL进行配置。

客户端可以很好地相互沟通。另外,当我停止两家经纪商中的一家时,他们转向其余的经纪商。

但是,当我重新启动代理时,我期望看到一些客户转移到新的代理。不幸的是,我真正看到的是他们都保持与同一个经纪人的联系。

他们不平衡自己的原因可能是什么? 另外,我希望客户在最初连接两个经纪人时分散。有什么办法可以实现这一点?

回答

1

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

直到定义了一个更好的机制,客户端可以连接并通告它愿意重定向,我认为您不会看到ActiveMQ在AMQP客户端上强制删除连接以重新平衡它们。

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

+0

我担心这将是根本原因。所有的例子都是使用openwire,但是没有明确说明这只适用于openwire,所以我暗中希望我做错了什么。那么,回到绘画界吧。 – Pieter

+0

有人在做这些事情,所以希望不会丢失。 –

+0

我们可能会转而使用openwire。 – Pieter