我正在使用执行程序通道,因为此时我想切换线程来完成事务。唯一的另一种方法是使用poller,我认为执行程序通道是一个更好的解决方案。唯一的问题是我找不到为这个调度程序定义错误通道的方法。错误始终发布在全局errorChannel上。
这是我的配置:
<task:executor id="routingExec" pool-size="10"/>
<int:channel id="baseFlow.route">
<int:dispatcher failover="false" task-executor="routingExec"/>
</int:channel>
我想要这样的东西(比如在轮询器中):
<task:executor id="routingExec" pool-size="10"/>
<int:channel id="baseFlow.route">
<int:dispatcher error-channel="myErrorChannel" failover="false" task-executor="routingExec"/>
</int:channel>
答案 0 :(得分:1)
错误由ExecutorChannel
通过ErrorHandlingTaskExecutor
处理:
if (!(this.executor instanceof ErrorHandlingTaskExecutor)) {
ErrorHandler errorHandler = new MessagePublishingErrorHandler(
new BeanFactoryChannelResolver(this.getBeanFactory()));
this.executor = new ErrorHandlingTaskExecutor(this.executor, errorHandler);
}
defaultErrorChannel
与IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME
非常相似。
因此,要使用您自己的频道来处理来自ExecutorChannel
的错误,您应该为要发送的每封邮件使用errorChannel
标头,或者只使用ErrorHandlingTaskExecutor
注入您自己的MessagePublishingErrorHandler
}和defaultErrorChannel
符合您的期望。