ActiveMQ经纪人重新发送与消费者重新发送

时间:2015-11-19 14:06:53

标签: activemq messages mq

我试图了解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次尝试。

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

我的说法是否正确?

1 个答案:

答案 0 :(得分:2)

是。经纪人不知道任何客户重新发送。这发生在“驱动程序”中 - 在内存中。经纪人不会考虑客户是否已经重试过。结果是嵌套重试,这是很好的注意事项。