【问题标题】:ActiveMQ broker redelivery vs consumer redeliveryActiveMQ 代理重新交付与消费者重新交付
【发布时间】:2016-02-21 17:30:24
【问题描述】:

我试图了解ActiveMQ redeliveryPlugin 和消费者在将消息标记为毒丸之前接收消息的尝试之间的区别。有什么不同。在the documentation 中有一个例子:

<broker xmlns="http://activemq.apache.org/schema/core"    schedulerSupport="true" >
        .... 
        <plugins>
            <redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
                <redeliveryPolicyMap>
                    <redeliveryPolicyMap>
                        <redeliveryPolicyEntries>
                            <!-- a destination specific policy -->
                            <redeliveryPolicy queue="SpecialQueue" maximumRedeliveries="4"
redeliveryDelay="10000" />
                        </redeliveryPolicyEntries>
                        <!-- the fallback policy for all other destinations -->
                        <defaultEntry>
                            <redeliveryPolicy maximumRedeliveries="4" initialRedeliveryDelay="5000"
redeliveryDelay="10000" />
                        </defaultEntry>
                    </redeliveryPolicyMap>
                </redeliveryPolicyMap>
            </redeliveryPlugin>
        </plugins>

现在,我理解经纪人的重新交付系统与客户的系统是分开的。例如,在进行 6 次尝试(默认情况下)确认消息(CLIENT_ACKNOWLDGMENT 模式)后,消费者会发送毒丸。那么,是不是在收到毒丸后,broker 会尝试重新发送消息给消费者,消费者又会进行 6 次尝试。

因此,在将消息发送到 DLQ 之前,我们总共可能会尝试 4 x 6 = 24

我的理解正确吗?

【问题讨论】:

    标签: activemq messages mq


    【解决方案1】:

    是的。经纪人不知道有任何客户重新交付。这发生在“驱动程序”中 - 在内存中。代理不会考虑客户端是否已经重试。结果是嵌套重试,需要注意。

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 2014-12-15
      • 2014-09-24
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      相关资源
      最近更新 更多