У меня есть следующая конфигурация Spring Integration, которая позволяет мне вызвать метод шлюза из MVC Controller и позволить контроллеру вернуться, тогда как поток интеграции будет продолжаться сам по себе в отдельном потоке, который не блокирует контроллер ,Обработка ошибок в потоке интеграции интеграции async
Однако я не могу понять, как заставить обработчик ошибок работать для этого потока async. У моего шлюза определен канал ошибок, но по некоторым причинам мои исключения не достигают. Вместо этого я вижу, что вызывается 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();
}
Gateway:
@MessagingGateway(errorChannel = "interactiveExceptionChannel")
public interface InteractiveSlackGW {
@Gateway(requestChannel = "input")
void interactiveMessage(Collection<Request> messages);
}
Что я должен сделать для того, чтобы увидеть мои исключения происходит в потоке интеграции асинхронном обрабатывается мой обработчик ошибок?
О, это все объясняет. Спасибо, Гэри. –
Рассмотрите что-то вроде '@GatewayHeader (name =" errorChannel ", expression =" @ interactiveExceptionChannel ")'. Я думаю, что именно этот будет выполняться под Spring Integration 5.0. –