0

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

我发现这个链接(现在已经很老了) ActiveMQ with C# and Apache NMS - Count messages in queue but enumeration the queue 对于这个简单的任务来说似乎需要做很多工作。

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

谢谢,尼克

4

1 回答 1

2

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

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

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

于 2017-11-30T15:24:38.023 回答