我具有以下Spring Integration配置,该配置使我可以从MVC Controller调用网关方法并让控制器返回,而集成流将在不阻塞控制器的单独线程中自行继续.
但是,我无法弄清楚如何使我的错误处理程序为该异步流工作.我的网关定义了错误通道,但是由于某种原因我的异常没有到达.相反,我看到LoggingHandler被调用了.
@Bean
IntegrationFlow mainInteractiveFlow() {
return IntegrationFlows.from(
MessageChannels.executor("input", executor))
.split()
.channel(MessageChannels.executor(executor))
.transform(transformer)
.handle(genericMessageHandler, "validate")
.handle(genericMessageHandler, "checkSubscription")
.handle(interactiveMessageService, "handle")
.route(p -> p.getKind().name(),
m -> m.channelMapping(TaskKind.ABC.name(), "attachInteractiveChannel"))
.get();
}
@Bean
IntegrationFlow attachInteractiveChannelFlow() {
return IntegrationFlows.from(
MessageChannels.direct("attachInteractiveChannel"))
.handle(issueRouterService)
.get();
}
@Bean
IntegrationFlow interactiveExceptionChannelFlow() {
return IntegrationFlows.from(interactiveExceptionChannel())
.handle(errorHandler, "handleErrorMessage")
.get();
}
@Bean
MessageChannel interactiveExceptionChannel() {
return MessageChannels.direct("interactiveExceptionChannel").get();
}
网关:
@MessagingGateway(errorChannel = "interactiveExceptionChannel")
public interface InteractiveSlackGW {
@Gateway(requestChannel = "input")
void interactiveMessage(Collection messages);
}
为了看到我的错误处理程序正在处理的异步集成流程中发生的异常,我该怎么办?