【问题标题】:JMS Topic queue size always 0JMS 主题队列大小始终为 0
【发布时间】:2012-11-01 05:42:37
【问题描述】:

如果我将一堆消息发布到订阅者非常慢的主题。 geronimos“JMS 资源”选项卡中的“队列大小”保持为 0。如果我使用 JMS 队列而不是主题,我可以看到大小在增长。在这两种情况下,所有消息都会被传递。

为什么主题的“Queue Size”总是显示为0?

【问题讨论】:

    标签: java jms activemq geronimo


    【解决方案1】:

    主题代表发布-订阅模型,当没有订阅者收听时,消息将消失。因此对主题大小的查询总是为零。

    主题可以有多个订阅者,因此可以在多个“侦听”该主题的客户端上读取消息。

    另一方面,队列将保留消息,直到客户端请求下一条消息。在这里可以查询当前持有的消息量大小。一条消息只能由一个客户端接收。

    另请参阅 Oracle 的 Basic JMS API concepts

    针对理想情况进行描述,此处不考虑持久主题以及临时队列。

    【讨论】:

    • 也许我不清楚我的问题,但我真正想知道的是:在涉及主题且听众可用的情况下,如果消费者/听众接受,消息不会消失处理消息的时间比生产者生成消息的时间要长。主题消息“排队”我想知道在哪里可以通过 JMS 查找特定消费者排队的消息数量。
    • 嗯,我不是很了解Geronimo,但是它使用了ActiveMQ。您是否检查了 JMX 资源,可能是“飞行计数”? activemq.apache.org/how-do-i-find-the-size-of-a-queue.htmlactivemq.apache.org/jmx.html
    猜你喜欢
    • 2011-07-31
    • 2012-12-15
    • 1970-01-01
    • 2022-01-05
    • 2019-11-06
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多