5

我有一个带有 ServiceActivator 方法的 Component 类:

@Component("payloadService")
public class PayloadService {

    @Transactional
    @ServiceActivator
    @Description("Pre-check service")
    public Message<String> preCheck(Message<String> message) {
        ...
    }
}

我有一个 Spring Integration 4 Java DSL 流,它调用 ServiceActivator 的 preCheck 方法,如下所示:

IntegrationFlows.from("input.ch")
    .handle("payloadService", "preCheck")
    ...
    .get();

我现在正在尝试向服务调用添加重试建议(如此处所示http://docs.spring.io/spring-integration/reference/htmlsingle/#retry-config),但我想以 Java DSL 形式执行此操作如https://github.com/spring-projects/spring-integration-extensions/wiki/Spring-Integration-Java-DSL-Reference#dsl-and-endpoint-configuration中所述。

但是,我不太清楚如何在实践中将此建议应用到我的 DSL 形式的流程中。可能因为我还不太熟悉 lambdas 等而苦苦挣扎。

有人可以给我一些关于如何做到这一点的指示吗?

提前谢谢,PM

4

1 回答 1

11

像这样:

....

IntegrationFlows.from("input.ch")
    .handle("payloadService", "preCheck", e -> e.advice(retryAdvice()))
    ...
    .get();

....

@Bean
public Advice retryAdvice() {
   RequestHandlerRetryAdvice advice = new RequestHandlerRetryAdvice();
   ...
   return advice;
}

另一方面,您可以尝试 Spring Retry 项目中的新注释内容:

@Configuration
@EnableIntegration
@EnableRetry
....

@Transactional
@ServiceActivator
@Retryable
@Description("Pre-check service")
public Message<String> preCheck(Message<String> message) {
于 2014-08-05T11:18:34.680 回答