【问题标题】:How to get the number of JMS messages in a Topic如何获取Topic中JMS消息的数量
【发布时间】:2010-12-08 08:52:42
【问题描述】:

如何获取等待特定 JMS 消息订阅者使用的 JMS 消息数?我使用主题模型(发布/订阅)而不是队列模型。

我希望我的 MDB(消息驱动 bean)能够找出有关它所听主题的信息。要清楚;我希望我的 MDB 获得等待使用的消息数。

我在 Internet 或文档中都找不到任何信息 :(

我使用 JBoss Messaging 1.4.4。

【问题讨论】:

    标签: jboss jms messaging subscriber


    【解决方案1】:

    AFAIK,JMS 没有指定任何东西来计算目标中的消息数。

    您需要为此使用 JMX。查看文档中的MBean attributes of the Topic MBean 和/或TopicMBean#getMessageCounters() 的java 文档。 MessageCounterdepth 属性应该是您正在寻找的。但是,老实说,我不知道您将如何处理这些信息,以及这是否对主题有意义。只要一条消息还没有被传递给所有订阅者,并且每个订阅者通常不了解其对等点,消息就会保留在主题中。那么一个 MDB 将如何解释消息计数呢?

    另外请注意,我在 JBoss Messaging 2.0.0.alpha1 的 javadoc 中找不到这个 MBean。我不知道它是否已被弃用(根据 1.4 中的代码,它不是)或者文档是否不是最新的(毕竟,它是 alpha1 javadoc,我找不到 beta4 的链接)。

    编辑: 正如 skaffman 指出的,JBoss Messaging 已更名为 HornetQ。看起来 API 发生了一些变化,但概念仍然适用。文档是here

    【讨论】:

    • JBossMessaging 2 已更名为 HornetQ,目前处于 beta 5。
    • 感谢您的回答!我想要这个值的原因是因为我将主题连接到我监控一些参数的系统。其中之一是“每个主题订阅者还有多少消息要处理”。 Mayby 有更好的方法吗?
    【解决方案2】:

    你不能,不能使用 JMS API。内部 JBossMessaging API 可能会公开该信息,但您必须查看该文档才能找到它。

    【讨论】:

      猜你喜欢
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 2019-02-13
      • 2011-05-04
      • 2016-06-14
      • 1970-01-01
      相关资源
      最近更新 更多