使用ActiveMQ监视代理重新交付

使用ActiveMQ监视代理重新交付,activemq,monitoring,jmx,Activemq,Monitoring,Jmx,我们已经使用此配置配置了ActiveMQ代理和代理重新交付插件 <redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true"> <redeliveryPolicyMap> <redeliveryPolicyMap> <redeliveryPolicyEntries>

我们已经使用此配置配置了ActiveMQ代理和代理重新交付插件

<redeliveryPlugin fallbackToDeadLetter="true"
                sendToDlqIfMaxRetriesExceeded="true">
    <redeliveryPolicyMap>
        <redeliveryPolicyMap>
            <redeliveryPolicyEntries>
            </redeliveryPolicyEntries>
            <!-- the fallback policy for all other destinations -->
            <defaultEntry>
                <redeliveryPolicy
                    maximumRedeliveries="15"
                    useExponentialBackOff="true"
                    initialRedeliveryDelay="5000"
                    useCollisionAvoidance="true"
                    backOffMultiplier="5"
                    maximumRedeliveryDelay="93600000" />
            </defaultEntry>
        </redeliveryPolicyMap>
    </redeliveryPolicyMap>
</redeliveryPlugin>

插件按预期执行从队列中删除失败消息并按指定间隔重试


我们现在面临的问题是,我们需要监控每个队列当前等待重试的消息数量,因为它们在正常队列监控中不会显示为正在等待。我在ActiveMQ的JMX树中找不到任何与redeliveryPlugin相关的内容。

消息存储在JobSchedulerStore中,它是与普通AMQ或JDBC存储区分开的存储区。该商店的可见性较低,但应该有一个MBean。您可以通过JMX获取一些信息,也可以通过发送设置了特殊头的JMS消息来获取信息。有一篇关于JMS风格管理的文章。

从我所看到的情况来看,您只能查询在特定时间间隔内安排的消息,但这将为您提供整个消息,而不仅仅是元信息,这使得您不可能进行监视(例如,每X秒)当前计划的邮件数量。还是我遗漏了什么?不,监控能力有限。在主干上,MBean中有一些额外的方法来帮助监视。该项目是开源的,因此您可以提供所需的功能。