【发布时间】:2018-04-03 14:36:34
【问题描述】:
我尝试处理 Spring 集成流程中发生的异常。
流程如下:
源 -> 拆分 -> 句柄 -> 句柄
我的来源提供了一个对象列表作为有效负载。 拆分一次发出一个元素。
第一个处理程序遇到异常。 我期待由于异常被发布到下面示例中配置的错误通道,列表中的其他元素将继续发出。 但是在第一个异常之后,流程停止了!!! 有没有我遗漏的配置?
@Bean
public IntegrationFlow pubSubFlow(PublishSubscribeChannel publishSubscribeChannel,
@Qualifier("myMessagePublishingErrorHandler") MessagePublishingErrorHandler messagePublishingErrorHandler) {
return flow -> flow
.channel(publishSubscribeChannel)
.publishSubscribeChannel(config -> config
.subscribe(f1 -> f1
.split()
.handle("action", "act")
.handle(m1 -> System.out.println(">>>" + m1)))
.subscribe(f1 -> f1
.split()
.handle(m1 -> System.out.println("<<<" + m1)))
.errorHandler(messagePublishingErrorHandler));
}
错误处理程序:
@Bean
public MessagePublishingErrorHandler myMessagePublishingErrorHandler(@Qualifier("appErrorChannel") DirectChannel directChannel) {
MessagePublishingErrorHandler messagePublishingErrorHandler = new MessagePublishingErrorHandler();
messagePublishingErrorHandler.setDefaultErrorChannel(directChannel);
return messagePublishingErrorHandler;
}
@Bean
public DirectChannel appErrorChannel() {
return new DirectChannel();
}
@Bean
public IntegrationFlow errorFlow(@Qualifier("appErrorChannel") DirectChannel directChannel) {
return IntegrationFlows.from(directChannel).handle(System.out::println).get();
}
【问题讨论】:
标签: java spring exception-handling spring-integration