我现在正在使用 hornetq 一段时间,直到最近还可以。我有一个这样的问题:我有一些消息“卡在”队列中(我正在使用客户端确认模式,所以问题可能是我的一些消费者持有消息并且没有发送确认) . 我正在使用 JConsole 查看队列,我可以看到消息计数器正在上升,但是当我尝试“listMessagesAsJson”时,我得到一个空结果以供参考,我尝试将它们发送到稍后死亡队列(事务模式并抛出 RuntimeExceptions故意)并且在DLQ中我实际上可以看到messageCounter和“listMessagesAsJson”实际上确实在DLQ上工作(我正在获取消息列表)但是,我无法理解DLQ和我的普通队列之间的区别。有谁可以帮我离开这里吗?提前致谢
问问题
963 次
2 回答
2
我们添加了另一种名为 listDeliveringMessages 的方法,它可以为您提供飞行中的消息并让您了解正在发生的事情。
这是作为https://issues.jboss.org/browse/HORNETQ-763的一部分完成的
您当前使用的是 2.2.14(根据我们在 hornetq 论坛上的讨论),其中不包含修复程序。
有关更多详细信息,您可以参考此 github 提交:https ://github.com/hornetq/hornetq/commit/3812ee77100c473489f72f36e5078a56d37e5c19
于 2013-02-19T21:28:48.837 回答
1
我怀疑你对客户没有回复消息是正确的。队列中已经交付给消费者但尚未确认(或 TX 提交)的消息处于这种灰色状态,必须保留它们以防客户端回滚并且必须重新交付消息,但同时,它们'基本上其他任何人都无法使用,因为它们只能交付给一个消费者。我敢打赌,如果您的队列中有n条消息,但没有活跃的消费者,则listMessagesAsJson操作将毫无问题地列出它们。
DLQ 起作用是因为运行时异常是终端的,并且代理知道消息已被消费者拒绝,因此它不在“灰色”区域中。
于 2013-02-18T16:42:16.273 回答