2016-07-19 5 views
1

この時点でトランザクションを終了するためにスレッドを切り替えたいので、エグゼキュータチャネルを使用しています。これを行う唯一の他の方法はポーラーであり、私はexecutorチャンネルがずっと良いソリューションだと思っています。唯一の問題は、このディスパッチャのエラーチャネルを定義する方法が見つからないことです。エラーは常にグローバルerrorChannelに発行されます。ここで エグゼキュータチャネルのエラーチャネル

は私の設定です:

<task:executor id="routingExec" pool-size="10"/> 

<int:channel id="baseFlow.route"> 
    <int:dispatcher failover="false" task-executor="routingExec"/> 
</int:channel> 

そして、私は(ポーラーのように)このような何かをしたい:

答えて

1

エラーがExecutorChannelErrorHandlingTaskExecutor経由で処理され

<task:executor id="routingExec" pool-size="10"/> 

<int:channel id="baseFlow.route"> 
    <int:dispatcher error-channel="myErrorChannel" failover="false" task-executor="routingExec"/> 
</int:channel> 
if (!(this.executor instanceof ErrorHandlingTaskExecutor)) { 
    ErrorHandler errorHandler = new MessagePublishingErrorHandler(
      new BeanFactoryChannelResolver(this.getBeanFactory())); 
    this.executor = new ErrorHandlingTaskExecutor(this.executor, errorHandler); 
} 

defaultErrorChannelは本当にです。だから、

、そのExecutorChannelからエラーのために独自のチャンネルを使用するには、送信、またはちょうどMessagePublishingErrorHandlerし、あなたの期待に構成されたdefaultErrorChannelを使用して独自のErrorHandlingTaskExecutorを注入する各メッセージのerrorChannelヘッダーを使用する必要があります。

関連する問題