2
我有以下的Spring集成配置,它允許我從MVC控制器調用網關方法並讓控制器返回,而集成流程將在不阻塞控制器的單獨線程中自行繼續。在Spring集成流程異步處理異步
但是,我無法弄清楚如何讓我的錯誤處理程序爲這個異步流程工作。我的網關有錯誤通道定義,但我的例外由於某種原因不能達到它。相反,我看到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")
.<Task, String>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<Request> messages);
}
我應該怎麼才能看到我的異常在異步集成流程發生在我的錯誤處理程序正在處理呢?
哦,它解釋了一切。謝謝,加里。 –
考慮類似'@GatewayHeader(name =「errorChannel」,expression =「@ interactiveExceptionChannel」)''。我認爲這個將在Spring Integration 5.0中完成。 –