【问题标题】:Monitoring Broker Redelivery with ActiveMQ使用 ActiveMQ 监控代理重新交付
【发布时间】:2014-09-24 11:09:10
【问题描述】:

我们已经使用此配置为我们的 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 相关的任何内容。

【问题讨论】:

    标签: activemq monitoring jmx


    【解决方案1】:

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

    【讨论】:

    • 据我所知,您只能查询在某个时间间隔内安排的消息,但这会给您整个消息而不仅仅是元信息,这使得它不切实际如果您想监视(例如每 X 秒)当前安排了多少消息。还是我错过了什么?
    • 不行,监控能力有限。在主干上,MBean 中有一些额外的方法来帮助监控。该项目是开源的,因此您可以贡献您需要的功能。
    猜你喜欢
    • 2016-02-21
    • 2014-12-15
    • 1970-01-01
    • 2013-03-07
    • 2017-01-01
    • 1970-01-01
    • 2018-01-30
    • 2015-06-23
    • 2014-10-23
    相关资源
    最近更新 更多