Apache NMS 获取未决消息计数

Apache NMS Getting pending message count

我正在尝试使用 c# 获取 activeMQ 队列上的当前消息数。

我找到了这个 link(现在已经很旧了) ActiveMQ with C# and Apache NMS - Count messages in queue 但是枚举队列对于这个简单的任务来说似乎需要做很多工作。

这是获取队列消息计数的唯一方法吗?如果我确实使用此方法,那么在我枚举时队列是否已锁定(我不想阻止其他读者)?

谢谢, 尼克

您可以执行其他答案中描述的枚举操作,这在很多情况下不会为您提供正确答案,或者您可以使用 statistics broker plugin 并从代理查询该数据。

使用统计插件,您可以将消息发送到控制队列并侦听对您提供的 replyTo 目的地的响应,并获得目的地的完整统计信息,需要注意的是您需要解析数据但是那不应该那么难。

枚举方法不会锁定队列,但它不会按您想要的方式工作,因为代理在向 QueueBrowser 提供数据时停止之前进入深队列的深度是有限制的,所以你不能确定你得到了正确的计数。此外,使用统计插件可以减少代理开销和网络流量,因为代理只需要向您发送一个包含其中数据的响应,而不是为了计数而向您发送所有消息。