代理的 ActiveMQ 网络中的负载平衡
Load balancing in ActiveMQ network of brokers
我们正在使用 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 构建了我们的客户端。已使用故障转移配置客户端 -url.
客户端之间可以正常通信。另外,当我停止两个经纪人之一时,他们会切换到剩余的经纪人。
但是,当我重新启动代理时,我曾预计会看到一些客户转移到新代理。不幸的是,我实际看到的是他们都与同一个经纪人保持联系。
他们不重新平衡自己的原因可能是什么?
此外,我希望客户在最初连接时分布在两个经纪人身上。有什么办法可以实现吗?
ActiveMQ 代理不会尝试重新平衡代理网络中的 AMQP 客户端。可能有一种方法可以实现它,但它对每个连接的 AMQP 客户端的性质做了一些假设,例如它们都支持连接重定向,但并非所有人都支持。
除非定义更好的机制以便客户端可以连接并通告它愿意被重定向,否则我认为您不会看到 ActiveMQ 强行断开 AMQP 客户端上的连接以重新平衡它们。
代理能够重新平衡 OpenWire 客户端,因为它知道与故障转移传输连接的 OpenWire 客户端将处理请求客户端离开的连接控制命令,其中未连接故障转移的客户端将忽略那个命令。
我们正在使用 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 构建了我们的客户端。已使用故障转移配置客户端 -url.
客户端之间可以正常通信。另外,当我停止两个经纪人之一时,他们会切换到剩余的经纪人。
但是,当我重新启动代理时,我曾预计会看到一些客户转移到新代理。不幸的是,我实际看到的是他们都与同一个经纪人保持联系。
他们不重新平衡自己的原因可能是什么? 此外,我希望客户在最初连接时分布在两个经纪人身上。有什么办法可以实现吗?
ActiveMQ 代理不会尝试重新平衡代理网络中的 AMQP 客户端。可能有一种方法可以实现它,但它对每个连接的 AMQP 客户端的性质做了一些假设,例如它们都支持连接重定向,但并非所有人都支持。
除非定义更好的机制以便客户端可以连接并通告它愿意被重定向,否则我认为您不会看到 ActiveMQ 强行断开 AMQP 客户端上的连接以重新平衡它们。
代理能够重新平衡 OpenWire 客户端,因为它知道与故障转移传输连接的 OpenWire 客户端将处理请求客户端离开的连接控制命令,其中未连接故障转移的客户端将忽略那个命令。