ActiveMQ经纪人网络不转发消息

Car*_*l Z 6 failover activemq-classic

我有两个ActiveMQ代理(A和B)配置为存储转发网络.当代理B连接消费者并且生产者向A发送消息时,它们完美地将消息从A转发到B.问题是当消费者被杀死并重新连接到A时,B上排队的消息(它们是从A)不会转发回消费者所连接的A.即使我向B发送新消息,所有消息都被卡在B上,直到我重新启动经纪人.我试图在代理网络连接器上设置networkTTL ="4"和duplex ="true",但它不起作用.

Tim*_*Tim 5

答案较晚,但希望这会在将来对其他人有所帮助。

邮件被卡在B中,因为默认情况下AMQ不允许将邮件发送回先前已传递到的代理。在正常情况下,这可以防止消息绕网状网络拓扑循环传递而不会传递,但在故障转移情况下,这会导致消息卡在一个代理上,而无法到达所有使用者所在的代理。

如果当前代理处于死角状态,因为没有消费者连接,因此允许消息返回给代理,则应使用replayWhenNoConsumers = true来将卡在B上的消息转发回A。

http://activemq.apache.org/networks-of的“粘滞消息(版本5.6)”部分介绍了该配置选项,您可能希望与之结合使用的某些设置以及使用时的一些注意事项。-brokers.html,http: //tmielke.blogspot.de/2012/03/i-have-messages-on-queue-but-they-dont.html和https://issues.apache.org/jira/浏览/ AMQ-4465。确保您可以忍受这些更改的副作用(例如,通过经纪人到经纪人的网络连接可能重复发送其他消息)。