0

この記事のセクション 3.3.1で提供されている詳細に従って、Rabbit サーバーに接続しようとしている Spring Integration プロジェクトで再試行機能を構成しようとしています。しかし、再試行ポリシーが機能していないようです。これは私の構成にあるものです:

<!-- 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 回後も停止しません)。

誰かが私の構成の何が問題なのかを指摘できるかどうか疑問に思っています。

4

1 に答える 1

2

まず、maxattempts=33 回の試行 (2 回の再試行) を意味するため、最初の試行、8 ミリ秒後に 2 回目の試行、800 ミリ秒後に最後の試行が表示されるはずです。

100 という乗数は過剰に思えます。次の試行 (maxattempts が 4 の場合) は 80 秒後になります。

再試行の進行状況を追跡するには、DEBUG ログを有効にすることをお勧めします。

于 2015-03-31T08:01:43.673 に答える