ActiveMQ 代理重新交付与消费者重新交付
ActiveMQ broker redelivery vs consumer redelivery
我试图了解 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
模式),消费者发送毒丸。那么,在收到毒丸后,经纪人是否会尝试将消息重新发送给消费者,消费者将再进行 6 次尝试。
因此,在将消息发送到 DLQ
之前,我们总共可能有 4 x 6 = 24
次尝试。
我的理解正确吗?
是的。经纪人不知道任何客户重新交付。这发生在 "the driver" - 在内存中。经纪人不会考虑客户是否已经重试。结果是嵌套重试,注意这一点。
我试图了解 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
模式),消费者发送毒丸。那么,在收到毒丸后,经纪人是否会尝试将消息重新发送给消费者,消费者将再进行 6 次尝试。
因此,在将消息发送到 DLQ
之前,我们总共可能有 4 x 6 = 24
次尝试。
我的理解正确吗?
是的。经纪人不知道任何客户重新交付。这发生在 "the driver" - 在内存中。经纪人不会考虑客户是否已经重试。结果是嵌套重试,注意这一点。