【问题标题】:Make temporarily copy of specific activeMQ queue to count the number of messages?临时复制特定的activeMQ队列以计算消息数?
【发布时间】:2020-09-21 23:54:06
【问题描述】:

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

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

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

镜像队列、虚拟主题和复合目标没有帮助,因为它会将所有消息转发到另一个队列,而不是复制现有队列。

【问题讨论】:

    标签: jms activemq


    【解决方案1】:

    考虑到您想要的只是获取队列中消息的计数,这种方法似乎有点过头了,这很容易使用JMX MBeans 队列统计信息来实现。您也可以使用Jolokia powered Rest API 访问 MBean。

    如果您对 JMX 毫无抵抗力,那么您可以利用 statistics broker plugin 允许基于消息的 API 访问代理统计信息。

    【讨论】:

    • 我想获取在特定时间范围内添加到队列中的消息数。不是队列中所有消息的计数。
    • @ChetanParakh -- JMX 记录入队/出队计数以及总大小。您可以比较两个时间点的入队计数。尝试复制队列——即使是可能的——也无法解决您的问题,除非您可以立即复制它。
    • @ChetanParakh 听起来您想将代理视为数据库,但它肯定不是。
    猜你喜欢
    • 2022-06-14
    • 1970-01-01
    • 2014-09-17
    • 2012-11-16
    • 2015-12-13
    • 1970-01-01
    • 2015-09-23
    • 2018-07-15
    • 2015-04-04
    相关资源
    最近更新 更多