Spring integration Spring集成与集成;重试:每个服务激活器是否需要一个单独的重试bean?

Spring integration Spring集成与集成;重试:每个服务激活器是否需要一个单独的重试bean?,spring-integration,spring-retry,Spring Integration,Spring Retry,我有一个spring集成管道,我有许多不同的服务激活器,我想为它们启用重试 我希望使用相同的重试策略(即重试次数、退避策略等)。我可以只使用一个bean来实现重试策略并将其用于几个不同的服务激活器,还是每个服务激活器都需要自己的重试bean?换句话说,我是否可以制作一个bean“retryWithBackupAdviceSession”,并将其设置为多个服务激活器的请求hadler建议链?还是每个人都需要自己的 下面是我正在使用的重试策略的一个示例 <bean id="retryWithB

我有一个spring集成管道,我有许多不同的服务激活器,我想为它们启用重试

我希望使用相同的重试策略(即重试次数、退避策略等)。我可以只使用一个bean来实现重试策略并将其用于几个不同的服务激活器,还是每个服务激活器都需要自己的重试bean?换句话说,我是否可以制作一个bean“retryWithBackupAdviceSession”,并将其设置为多个服务激活器的请求hadler建议链?还是每个人都需要自己的

下面是我正在使用的重试策略的一个示例

<bean id="retryWithBackoffAdviceSession" class="org.springframework.integration.handler.advice.RequestHandlerRetryAdvice">
            <property name="retryTemplate">
                <bean class="org.springframework.retry.support.RetryTemplate">
                    <property name="backOffPolicy">
                        <bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy">
                            <property name="initialInterval" value="2000" />    <!-- 2 seconds -->
                            <property name="multiplier" value="2" />            <!-- double the wait each time -->
                            <property name="maxInterval" value="30000"/>        <!-- maximum of 30 seconds -->
                        </bean>
                    </property>
                    <property name="retryPolicy">
                        <bean class="org.springframework.retry.policy.SimpleRetryPolicy">
                            <property name="maxAttempts" value="3"/>
                        </bean>
                    </property>
                </bean>
            </property>
            <property name="recoveryCallback">
                <bean class="org.springframework.integration.handler.advice.ErrorMessageSendingRecoverer">
                    <constructor-arg ref="myErrorChannel"/>
                </bean>
            </property>
        </bean>


作为后续问题,如果我的service activator在执行器通道中运行,它是否以某种方式跟踪每个线程的重试次数?或者我需要做些什么来确保在同一个线程安全服务激活器上的不同消息上重试的不同线程之间没有串扰?

你走对了路:
RequestHandlerRetryAdvice
是线程安全的,因此,您可以从多个地方使用相同的Bean。

我还必须在我的项目中实现重试机制,并且我创建了自己的实现

这很有魅力


您只需使用@Retry注释来注释您的方法,提供一些您想要的配置并完成它。

hi alan。。我也想做同样的事情,你能分享整个xml配置吗#谢谢,我恐怕无法共享配置。一年多前,我离开了我的“春季”职责。这些天我在做嵌入式C+。非常抱歉。