【发布时间】:2010-12-08 08:52:42
【问题描述】:
如何获取等待特定 JMS 消息订阅者使用的 JMS 消息数?我使用主题模型(发布/订阅)而不是队列模型。
我希望我的 MDB(消息驱动 bean)能够找出有关它所听主题的信息。要清楚;我希望我的 MDB 获得等待使用的消息数。
我在 Internet 或文档中都找不到任何信息 :(
我使用 JBoss Messaging 1.4.4。
【问题讨论】:
标签: jboss jms messaging subscriber
如何获取等待特定 JMS 消息订阅者使用的 JMS 消息数?我使用主题模型(发布/订阅)而不是队列模型。
我希望我的 MDB(消息驱动 bean)能够找出有关它所听主题的信息。要清楚;我希望我的 MDB 获得等待使用的消息数。
我在 Internet 或文档中都找不到任何信息 :(
我使用 JBoss Messaging 1.4.4。
【问题讨论】:
标签: jboss jms messaging subscriber
AFAIK,JMS 没有指定任何东西来计算目标中的消息数。
您需要为此使用 JMX。查看文档中的MBean attributes of the Topic MBean 和/或TopicMBean#getMessageCounters() 的java 文档。 MessageCounter 的 depth 属性应该是您正在寻找的。但是,老实说,我不知道您将如何处理这些信息,以及这是否对主题有意义。只要一条消息还没有被传递给所有订阅者,并且每个订阅者通常不了解其对等点,消息就会保留在主题中。那么一个 MDB 将如何解释消息计数呢?
另外请注意,我在 JBoss Messaging 2.0.0.alpha1 的 javadoc 中找不到这个 MBean。我不知道它是否已被弃用(根据 1.4 中的代码,它不是)或者文档是否不是最新的(毕竟,它是 alpha1 javadoc,我找不到 beta4 的链接)。
编辑: 正如 skaffman 指出的,JBoss Messaging 已更名为 HornetQ。看起来 API 发生了一些变化,但概念仍然适用。文档是here。
【讨论】:
你不能,不能使用 JMS API。内部 JBossMessaging API 可能会公开该信息,但您必须查看该文档才能找到它。
【讨论】: