Я пытаюсь опубликовать свои исключения в определенном канале ошибки.Я использую MessagePublishingErrorHandler
для того же.
Но мои ошибки не направляются на канал, который я создаю.
Вот мой код: -
канал: -
@Bean(value = "appErrorChannel")
public PublishSubscribeChannel appErrorChannel() {
return new PublishSubscribeChannel();
}
MessageHandler:
@Bean
public MessagePublishingErrorHandler myMessagePublishingErrorHandler(@Qualifier("appErrorChannel") PublishSubscribeChannel errChannel) {
MessagePublishingErrorHandler messagePublishingErrorHandler = new MessagePublishingErrorHandler();
messagePublishingErrorHandler.setDefaultErrorChannel(errChannel);
return messagePublishingErrorHandler;
}
FLow с этого канала: -
@Bean
public IntegrationFlow errorFlow(@Qualifier("appErrorChannel") PublishSubscribeChannel errChannel) {
return flow -> flow.channel(errChannel).
publishSubscribeChannel(spec -> spec
.subscribe(f1 -> f1.handle(m -> System.out.println("******************* "+ m.getPayload()))));
}
Мой оригинальный канал.Метод act
вызывает исключение: -
@Bean
public IntegrationFlow pubSubFlow(PublishSubscribeChannel publishSubscribeChannel,
@Qualifier("myMessagePublishingErrorHandler")
MessagePublishingErrorHandler messagePublishingErrorHandler) {
return flow -> flow.channel(publishSubscribeChannel).split()
.channel(new ExecutorSubscribableChannel(Executors.newFixedThreadPool(1)))
.publishSubscribeChannel(config -> config
.subscribe(f1 -> f1.handle("action", "act")
.handle(m1 -> {System.out.println(">>>"+m1);}))
.errorHandler(messagePublishingErrorHandler)
);
}