首页 文章

为什么ActiveMQ在重新安排重新安排之前将消息传递了6次?

提问于
浏览
0

我正在使用apacheMQ作为队列管理器 . 我正在使用Spring的DefaultMessageListenerContainer来使用消息 . 我已配置它,因此它有一个事务:

<bean id="jmsContainerXXX" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="myConnectionFactory"/>
    <property name="destination" ref="myDestination"/>
    <property name="messageListener" ref="myMessageListener" />
    <property name="concurrentConsumers" value="5"/>
    <property name="sessionTransacted" value="true" />
</bean>

我已将ApacheMQ配置为具有特定的重新传递策略,因此如果消息未成功处理,则会在1分钟,5分钟,25分钟等之后重新传递:

<redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
    <redeliveryPolicyMap>
        <redeliveryPolicyMap>
            <!-- the fallback policy for all destinations -->
            <defaultEntry>
                <redeliveryPolicy maximumRedeliveries="10" 
                                  maximumRedeliveryDelay="14400000"
                                  redeliveryDelay="60000"
                                  initialRedeliveryDelay="60000" 
                                  useExponentialBackOff="true"
                                  backOffMultiplier="5"/>
            </defaultEntry>
        </redeliveryPolicyMap>
    </redeliveryPolicyMap>
</redeliveryPlugin>

最后,在消息监听器中,我放置了一个粗体'throw new RuntimeException(“poum”);'确保交货失败 .

这就是我得到的结果: - 首先,ActiveMQ向我发送了6次消息,然后等待 . - 1分钟后,ActiveMQ再发送6次消息,然后等待 . - 5分钟后,ActiveMQ再发送6次消息,然后等待 . - 等

我的问题是:为什么ActiveMQ在重新安排之前传递了6次消息?

1 回答

相关问题