2012-06-21 118 views
0

我是activemq的新会员。我配置了两台activemq服务器,并在failover传输中使用它们。他们工作正常。我的意思是如果一个activemq下了另一个队列。我的问题是,当主服务器出现时,它不会恢复队列。如果主服务器启动,那么是否有任何这样的配置或协议可以管理它,然后消费者应该回到它。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是下跌。

回答

1

我已经这样做了。并发布解决方案,以防任何人遇到同样的问题。 该功能在activemq 5.6中可用。连接url中的priorityBackup=true是告诉消费者如果有可用主节点回来的关键。

我的新的连接URI是:

failover:master:61616,tcp://backup:61616)?randomize=false&amp;priorityBackup=true 

看到here了解更多详情。

+0

看起来这里的URI存在拼写错误;我希望它是'failover:(tcp:// master:61616,tcp:// backup:61616)?randomize = false & priorityBackup = true'。 – Tim

2

您配置的内容不是真正的HA部署,而是network of brokers。如果您在网络中配置了两个代理,则每个代理都有其自己的消息存储,该消息存储随时包含一部分消息(请参见how networks of brokers work)。

您可能期望看到的行为是,如果一个经纪人倒下,另一个经纪人从停止失败的地方恢复(取消失败的经纪人持有的所有未送达的消息)。为此,您需要使用(最好是共享存储)master-slave配置。