Spring Integration DSL错误处理并继续

时间:2019-07-03 02:38:30

标签: spring-integration spring-integration-dsl

在我的spring集成应用程序中,我具有执行errorChannel指定的Async网关方法。

出错时-我想通过将集成流注册到errorChannel来处理错误(我能够成功完成)。

一旦处理并处理了错误,我可能有条件地希望发送到其他通道进行进一步处理,最后将其回复给网关。实现此目标的最佳方法是什么?

示例->

@MessagingGateway(errorChannel = "errorChannel")
public interface OrchestrationServicesGateway {
   @Gateway(requestChannel = "payment.input", replyChannel = 
   "payment.output")
   Future<JobData> processPayment(PaymentRequest request);
}

集成流程具有步骤A-> B-> C-> D->结束

现在,如果步骤B引发错误,我想处理一个通用函数,并基于一些规则,我们可能希望继续执行C或跳转到D / end。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

我建议看一下ExpressionEvaluatingRequestHandlerAdvicehttps://docs.spring.io/spring-integration/docs/5.1.6.RELEASE/reference/html/#expression-advice。将其添加到所有单个端点,并在failureChannel上具有一些路由器逻辑,以确定进一步向何处发送补偿消息。

这样,您将没有一个具有硬逻辑即可确定消息失败位置的错误处理点。