4

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

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

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

我使用 JBoss 消息 1.4.4。

4

2 回答 2

4

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

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

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

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

于 2009-10-20T14:17:35.547 回答
0

You can't, not with the JMS API. The internal JBossMessaging API may expose that information, but you'll have to go looking through that documentation to find it.

于 2009-10-20T14:18:17.970 回答