ActiveMQ代理重新交付与消费者重新交付



我正在努力理解ActiveMQ redeliveryPlugin和消费者在将其标记为毒丸之前尝试接收消息之间的区别。有什么不同。文件中有一个例子:

<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模式)后,消费者发送毒丸。那么,在收到毒丸后,经纪人会尝试将消息重新发送给消费者,消费者会再次尝试6次,这是真的吗。

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

我的理解正确吗?

是。经纪人不知道有任何客户重新交付。这种情况发生在记忆中的"司机"身上。代理不会考虑客户端是否已经重试。结果是嵌套的重试,这是值得注意的。

相关内容

  • 没有找到相关文章

最新更新