activemq—计算具有特定属性值的消息数的最简单方法

activemq—计算具有特定属性值的消息数的最简单方法,activemq,activemq-cpp,Activemq,Activemq Cpp,在out产品中,我们需要偶尔统计队列中包含特定属性值的消息数。 直接的方法是使用带有选择器的队列浏览器。但是: 有没有一种方法可以在不浏览所有相关消息的情况下获取这些统计数据?我们不需要数据,只需要计数。 如果我们采用队列浏览器方法,它还会浏览一些消费者已消费但尚未确认的消息吗? 无法保证基于选择器对队列中的消息进行计数。产生这种情况的原因有很多,其中之一是JMS规范甚至不要求QueueBrowser返回队列中的每条消息。ActiveMQ返回的消息数不会超过它可以放入内存的消息数,因此如果您有一

在out产品中,我们需要偶尔统计队列中包含特定属性值的消息数。 直接的方法是使用带有选择器的队列浏览器。但是:

有没有一种方法可以在不浏览所有相关消息的情况下获取这些统计数据?我们不需要数据,只需要计数。 如果我们采用队列浏览器方法,它还会浏览一些消费者已消费但尚未确认的消息吗?
无法保证基于选择器对队列中的消息进行计数。产生这种情况的原因有很多,其中之一是JMS规范甚至不要求QueueBrowser返回队列中的每条消息。ActiveMQ返回的消息数不会超过它可以放入内存的消息数,因此如果您有一个深度队列,您将无法获得准确的计数。也没有任何管理工具可以为您做到这一点,因为作为数据库并不是ActiveMQ真正的工作

下面是一些关于消息传递反模式的文章,您应该阅读这些文章,以便更好地为消息传递中的冒险做好准备


好的。我知道这不是一个好的设计,但是在限制下,每一时刻队列中的未确认消息不超过1000条,每一条大约10kb,如果我只想知道是否至少有一条具有特定属性值的消息,它是否仍然不可靠?是的,消息代理不是数据库。请参阅:那么,为什么一开始就可以使用队列浏览器呢?它有任何合法用途吗?您必须询问JMS规范的作者。