【发布时间】:2015-09-13 23:16:33
【问题描述】:
我最近将一台服务器从 ActiveMQ 从 5.8 升级到了最新的 (5.11.1)。从那以后,我偶尔会注意到消息会在特定队列上堆积,而不会被删除。
我们的架构有一个生产者,一个消费者。我可以看到消费者仍处于连接状态,但来自生产者的消息正在堆积。我的解决方案是通过 Web 控制台删除队列。之后,我立即看到消费者重新连接并且消息再次开始处理。
如果相关,在这种情况下,生产者在 .NET 上运行 NMS,而消费者在 Java 1.7 上运行 JMS。
【问题讨论】:
-
如果您断开/重新连接消费者,它会起作用吗?删除队列听起来像是“蛮力修复”。
-
@SubOptimal 好问题,我实际上不确定答案。在应用程序运行时,我没有任何挂钩到应用程序以断开/重新连接消费者。我也不知道有什么方法可以检测到它处于这种卡住状态,因为从它的角度来看,消息只是没有进来。
-
下次通信卡住了。您可以使用 JConsole 通过 JMX 接口将与类
org.apache.activemq.transport.TransportLogger相关的记录器的日志记录级别更改为DEBUG。然后你应该看到代理通信。也许这可以解释发生了什么。