0

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

4

2 回答 2

2

您在那里配置的不是真正的 HA 部署,而是代理网络。如果您在网络中配置了两个代理,每个代理都有自己的消息存储,其中随时包含部分消息集(请参阅代理网络如何工作)。

您可能希望看到的行为是,如果一个代理发生故障,另一个代理会从失败的代理停止的位置恢复(故障代理持有的所有未传递消息)。为此,您需要使用(最好是共享存储)主从配置。

于 2012-07-02T12:13:46.303 回答
1

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

我的新连接 uri 是:

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

请参阅此处了解更多详细信息。

于 2012-07-24T13:54:15.997 回答