activemq failover:主节点恢复消费者?

时间:2012-06-21 07:11:10

标签: activemq failover

我是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是否已关闭。

2 个答案:

答案 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&amp;priorityBackup=true

有关详细信息,请参阅here