【问题标题】:hornetq "listMessagesAsJson" not workinghornetq“listMessagesAsJson”不工作
【发布时间】:2013-02-02 20:09:09
【问题描述】:

我现在使用 hornetq 有一段时间了,直到最近还可以。 我有一个这样的问题:我有一些消息“卡在”队列中(我正在使用客户端确认模式,所以问题可能是我的一些消费者持有消息并且没有发送确认) . 我正在使用 JConsole 查看队列,我可以看到消息计数器正在上升,但是当我尝试“listMessagesAsJson”时,我得到一个空结果 作为参考,我尝试将它们发送到死后队列(事务模式并故意抛出 RuntimeExceptions),在 DLQ 中我实际上可以看到 messageCounter 和“listMessagesAsJson”实际上确实在 DLQ 上工作(我正在获取消息列表) 但是,我无法理解 DLQ 和我的普通队列之间的区别。 有人可以帮我从这里出去吗? 提前致谢

【问题讨论】:

标签: java jms jmx hornetq


【解决方案1】:

我怀疑您对客户未确认消息的看法是正确的。队列中已经交付给消费者,但尚未确认(或 TX 提交)的消息处于这种灰色状态,必须保留它们以防客户端回滚并且必须重新交付消息,但同时,它们'基本上其他任何人都无法使用,因为它们只能交付给一个消费者。我敢打赌,如果您的队列中有 n 条消息,但没有活跃的消费者,listMessagesAsJson 操作将毫无问题地列出它们。

DLQ 起作用是因为运行时异常是终端的,并且代理知道消息已被消费者拒绝,因此它不在“灰色”区域。

【讨论】:

  • 这听起来合乎逻辑,除非我多玩了一些,“listScheduledMessages”的 api 确实返回队列中的延迟消息。另外,我希望 JMX 接口完全独立于它正在监视的资源,因此它绝对不应该将服务器视为另一个消费者
【解决方案2】:

我们添加了另一个名为 listDeliveringMessages 的方法,它可以为您提供飞行中的消息并让您了解正在发生的事情。

这是作为https://issues.jboss.org/browse/HORNETQ-763的一部分完成的

您当前使用的是 2.2.14(根据我们在 hornetq 论坛上的讨论),其中不包含修复程序..

更多细节可以参考这个github commit:https://github.com/hornetq/hornetq/commit/3812ee77100c473489f72f36e5078a56d37e5c19

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2014-03-20
    • 2013-09-17
    • 2017-12-24
    • 2011-12-11
    • 2017-12-26
    • 2017-01-08
    相关资源
    最近更新 更多