【发布时间】: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。
我的理解正确吗?
【问题讨论】: