春季重试IntegrationFlow

时间:2018-08-15 15:42:35

标签: spring-integration spring-integration-dsl

我有一个如下所示的集成流程,我想为整个集成流程添加一个重试。像流程中的任何异常一样,我们会重试,并在重试用尽时将其发送到死信队列。

IntegrationFlows
        .from(kinesisInboundChannelAdapter(amazonKinesis(), streamNames))
        .transform(new IssuanceTransformer())
        .route(router())
        .get(); 

您能帮我配置重试和死信队列吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您对集成流程和重试的理解有些错误。重试它申请了一些服务呼叫。当我们的流程像您一样复杂时,我们还会在服务呼叫之间建立渠道。因此,您可以做的是对您认为错误的每个组件进行重试。为此,您需要查看RequestHandlerRetryAdvice的{​​{1}}和advice()选项。

如果您确实将所有逻辑都放在一个线程和相同的调用堆栈中,那么我们真的可以提出“重试整个子流”之类的解决方案,但是从Spring Integration的角度来看,它仍然像一项服务呼叫。为此,您需要查看ConsumerEndpointSpec的{​​{1}} EIP方法:

.gateway()