执行程序通道的错误通道

时间:2016-07-19 15:06:23

标签: spring-integration

我正在使用执行程序通道,因为此时我想切换线程来完成事务。唯一的另一种方法是使用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>

1 个答案:

答案 0 :(得分:1)

错误由ExecutorChannel通过ErrorHandlingTaskExecutor处理:

if (!(this.executor instanceof ErrorHandlingTaskExecutor)) {
    ErrorHandler errorHandler = new MessagePublishingErrorHandler(
            new BeanFactoryChannelResolver(this.getBeanFactory()));
    this.executor = new ErrorHandlingTaskExecutor(this.executor, errorHandler);
}

defaultErrorChannelIntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME非常相似。

因此,要使用您自己的频道来处理来自ExecutorChannel的错误,您应该为要发送的每封邮件使用errorChannel标头,或者只使用ErrorHandlingTaskExecutor注入您自己的MessagePublishingErrorHandler }和defaultErrorChannel符合您的期望。