ActiveMQ trackMessages 属性 不工作

ActiveMQ trackMessages property not working

我正在使用 ActiveMQ 作为我的 JMS 系统,它从 JMSQueueAppender 的 logback 获取日志消息。客户端是一个网络应用程序。客户端和代理都在不同的机器上。

我的要求是,如果客户端无法连接到代理,那么它应该存储消息,直到它重新连接到代理。我尝试使用 Apache Failover Transport Reference 中提到的故障转移。我的连接URL如下:

failover:(tcp://10.17.67.116:61616?wireFormat.maxInactivityDuration=0)?trackMessages=true&maxReconnectDelay=10000&timeout=3000

trackMessages=true 属性 应该在客户端缓存正在运行的消息,稍后将在它出现时将其传递给代理。现在,我的问题是在代理出现后,我没有看到它收到任何应该传递的消息。

ActiveMQ的配置哪里出错了?这似乎是一个相当简单直接的实现,但它不起作用。

我认为 trackMessages=true 仅在失败的情况下有效,即客户端首先连接到服务器但在中途或在发送()期间或提交事务之前断开连接。在那种情况下 failover 协议应该能够缓存少量消息(取决于 maxCacheSize)并在返回后立即将它们发送到服务器。

尝试在一次交易中发送一批 100 条消息,并在每条消息发送中延迟 1 秒。所以消息生产者将花费 100 秒来完成交易。然后在这 100 秒内同时尝试重新启动服务器,看看它是否收到了这 100 条消息。

参考 - http://activemq.apache.org/failover-transport-reference.html