我已经使用拓扑配置了经纪人网络,如下所示。
客户端配置为使用故障转移:
一旦Channel-2关闭,P2和C2就转移到Channel-1,这是故障转移所需的行为。
我想了解Chaneel-2回归时的行为? 我注意到只有Channel-1继续为所有人提供服务 即使在Channel-2恢复之后,连接也会失去通道之间的负载平衡。
我想知道一旦Channel-2恢复后是否可能,负载平衡将在各个通道和相应的Producer-2之间自动启动,消费者-2转移到通道2,从而实现完全负载平衡和完全故障转移?
我发现了一篇文章“将容错与负载平衡结合起来” 建议将http://fusesource.com/docs/broker/5.4/clustering/index.html用于组合Fault Tolerance和Load Balancing?
此致
-Amber
答案 0 :(得分:4)
在两个代理上,您需要设置transportConnector以启用updateClusterClients和rebalanceClusterClients。
<transportConnectors>
<transportConnector name="tcp-connector" uri="tcp://192.168.0.23:61616" updateClusterClients="true" rebalanceClusterClients="true" />
</<transportConnectors>
具体来说,您应该需要rebalanceClusterClients。从http://activemq.apache.org/failover-transport-reference.html的文档中可以看出:
如果为true,将要求连接的客户端在群集中重新平衡 新经纪人加入经纪人网络时的经纪人
您必须使用ActiveMQ 5.4或更高版本才能使用这些选项。
答案 1 :(得分:0)
作为对后续问题的回答: “有没有像文章中讨论的那样记录Broker URI的方法?”
为了显示哪个客户端连接到哪个代理, 修改客户端的Log4j配置如下:
<log4j:configuration debug="true"
xmlns:log4j="http://jakarta.apache.org/log4j/">
...
<logger name="org.apache.activemq.transport.failover.FailoverTransport">
<level value="debug"/>
</logger>
...
</log4j:configuration>