我是activemq
的新手。我已经配置了两个activemq服务器并在failover
传输中使用它们。他们工作正常。我的意思是如果一个activemq下来另一个拿起队列。我的问题是当主服务器启动时它不会恢复队列。如果主服务器已启动,是否有任何此类配置或协议可以管理它,那么消费者应该回到它。
目前我的配置是:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" updateClusterClients="true" rebalanceClusterClients="true"/>
</transportConnectors>
<networkConnectors>
<networkConnector uri="static:(tcp://192.168.0.122:61616)"
networkTTL="3"
prefetchSize="1"
decreaseNetworkConsumerPriority="true" />
</networkConnectors>
和我的联系uri是:
failover:(tcp://${ipaddress.master}:61616,tcp://${ipaddress.backup}:61616)?randomize=false
此外,我想在发生故障转移时发送邮件,这样我就可以知道activemq是否已关闭。
答案 0 :(得分:2)
您配置的内容不是真正的HA部署,而是network of brokers。如果您在网络中配置了两个代理,则每个代理都有自己的消息存储库,该消息存储库随时包含一组部分消息(请参阅how networks of brokers work)。
您可能希望看到的行为是,如果一个经纪人倒下,另一个经纪人从失败的经纪人离开的位置恢复(使用失败的经纪人持有的所有未交付的消息)。为此,您需要使用(最好是共享存储)master-slave配置。
答案 1 :(得分:1)
我做到了。并且发布解决方案以防任何人遇到同样的问题。
activemq 5.6中提供此功能。连接url中的priorityBackup=true
是告诉消费者返回主节点(如果可用)的关键。
我的新连接uri是:
failover:master:61616,tcp://backup:61616)?randomize=false&priorityBackup=true
有关详细信息,请参阅here。