【发布时间】:2020-05-10 19:07:15
【问题描述】:
我有一个带有多个端点的 Spring Integration 应用程序,它们以不同的方式处理相同的数据。
它们都有相同的“@Recover”方法,这些方法已经成为样板并且看起来很脆弱。
您能否集中 @Recover 方法(例如在独立类中)和/或您能否指定如何找到此 @Recover 注释方法?
【问题讨论】:
标签: spring spring-integration spring-retry
我有一个带有多个端点的 Spring Integration 应用程序,它们以不同的方式处理相同的数据。
它们都有相同的“@Recover”方法,这些方法已经成为样板并且看起来很脆弱。
您能否集中 @Recover 方法(例如在独立类中)和/或您能否指定如何找到此 @Recover 注释方法?
【问题讨论】:
标签: spring spring-integration spring-retry
目前尚不清楚为什么在 Spring Integration 中使用 @Retryable,而 RequestHandlerRetryAdvice:https://docs.spring.io/spring-integration/docs/current/reference/html/messaging-endpoints.html#message-handler-advice-chain...
无论如何在@Retryable上看到这个选项:
/**
* Retry interceptor bean name to be applied for retryable method. Is mutually
* exclusive with other attributes.
* @return the retry interceptor bean name
*/
String interceptor() default "";
因此,您可以提供自己的方法,而不是 @Recover:
@Bean
public MethodInterceptor retryInterceptor() {
return RetryInterceptorBuilder.stateless()
.maxAttempts(...)
.recoverer(...)
.build();
}
...
@Retryable(interceptor = "retryInterceptor")
public void service() {
【讨论】:
@ServiceActivatoradviceChain。你可以在那里配置RequestHandlerRetryAdvice。