如何重试方法调用程序任务,我知道如果块任务失败,则可以选择重试并且可以选择设置退避策略,但是在方法调用程序任务 xsd 中我找不到重试选项。如果失败,是否有任何其他替代方法可以重试任务。
问问题
4158 次
2 回答
3
您可以使用 spring-retry 和声明式重试;只需应用<aop:config>
标签并配置拦截器。
要更改策略或侦听器,只需将 RetryTemplate 的实例注入拦截器
于 2013-09-18T05:18:49.340 回答
0
当我的 REST 调用无法读取数据时,我需要重试。spring 中的重试不会重试 Reader 失败。解决方案基本上就是@Luca 使用 RetryTemplate 和 aop 所说的。
<bean id="retryAdvice"
class="org.springframework.retry.interceptor.RetryOperationsInterceptor">
<property name="retryOperations">
<bean class="org.springframework.retry.support.RetryTemplate">
<property name="retryPolicy">
<bean class="org.springframework.retry.policy.SimpleRetryPolicy">
<property name="maxAttempts" value="5" />
</bean>
</property>
<property name="backOffPolicy">
<bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy">
<property name="initialInterval" value="3000"></property>
<property name="maxInterval" value="60000"></property>
</bean>
</property>
</bean>
</property>
</bean>
<aop:config>
<aop:pointcut
expression="execution(* com.mypackage.MyService.get*(..))"
id="remoteMethodPointCut"></aop:pointcut>
<aop:advisor pointcut-ref="remoteMethodPointCut"
advice-ref="retryAdvice" />
</aop:config>
于 2017-05-04T15:21:52.720 回答