临时复制特定的activeMQ队列以计算消息数?

问题描述

由于内存的限制,activeMQ仅返回队列的快照,并且在迭代队列时不保证所有消息。

为了计算所有消息,其中一个属性与特定值匹配,我想到制作一个队列副本(不消耗消息)。一旦创建了临时副本,我就可以开始使用此临时队列中的消息并计算与该属性匹配的所有消息。这样,原始队列将不受影响。

是否可以在不消耗队列消息的情况下复制队列?有什么缺点吗?

镜像队列,虚拟主题和组合目标将无济于事,因为它将所有消息转发到另一个队列,而不复制现有队列。

解决方法

鉴于您想要的只是简单地获取队列中的邮件计数,而使用JMX MBeans进行队列统计很容易实现,因此这种方法似乎有些矫kill过正。您也可以使用Jolokia powered Rest API访问MBean。

如果您对JMX设置呆滞,则可以利用statistics broker plugin允许基于消息的API访问代理统计信息。