使用retry-template在Spring AMQP中配置重试功能的问题

时间:2015-03-31 03:15:44

标签: rabbitmq spring-amqp spring-retry

我正在尝试在我的Spring Integration项目中配置重试功能,我正在尝试按照此article部分3.3.1中提供的详细信息连接到Rabbit服务器。但看起来重审政策并没有开始。 这就是我在配置中的含义:           

<!-- Spring AMQP Template -->
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"   retry-template="retryTemplate"
    exchange="myExchange" />

<bean id="retryTemplate" class="org.springframework.retry.support.RetryTemplate">
    <property name="backOffPolicy">
        <bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy">
            <property name="initialInterval" value="8" />
            <property name="multiplier" value="100.0" />
            <property name="maxInterval" value="100000" />
        </bean>
    </property>
    <property name="retryPolicy">
        <bean class="org.springframework.retry.policy.SimpleRetryPolicy">
            <property name="maxAttempts" value="3"/>
        </bean>
    </property>         
</bean>
<!-- Spring AMQP Admin -->
<rabbit:admin connection-factory="connectionFactory" />

基于该片段,我预计重试会以指数间隔发生3次。但根据日志,我看到重试尝试以7秒的间隔进行,并且它会一直持续(3次后不会停止)。

想知道是否有人可以指出我的配置有什么问题。

1 个答案:

答案 0 :(得分:2)

首先,maxattempts=3表示3次尝试(2次重试),因此您应该看到初始尝试,8ms后再次尝试,然后是800ms后的最终尝试。

乘数100似乎过多 - 下一次尝试(如果maxattempts为4)将在80秒后出现。

我建议您启用DEBUG日志记录以遵循重试进度。