在我的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。
我该如何实现?
答案 0 :(得分:0)
我建议看一下ExpressionEvaluatingRequestHandlerAdvice
:https://docs.spring.io/spring-integration/docs/5.1.6.RELEASE/reference/html/#expression-advice。将其添加到所有单个端点,并在failureChannel
上具有一些路由器逻辑,以确定进一步向何处发送补偿消息。
这样,您将没有一个具有硬逻辑即可确定消息失败位置的错误处理点。