2016-08-03 13 views
0

を使用せずに、私たちのプロジェクトでは、以下の流れのパターンがあります:パイプはトランザクション境界を象徴し、すべてのフローがTaskExecutorsを使用してマルチスレッド化されていトランザクション境界ポーラー

<input-flow> | <routing-flow> | <output-flow> 

を。入力フローでは、トランザクションはメッセージドリブンチャネルアダプタによって開始されますが、ルーティングフローと出力フローでは、現在レイテンシを引き起こすポーラーによって開始されます。

ポーラーレイテンシを避けるために、ExecutorChannelsを使用してトランザクション境界を作成したいと思いますが、ExecutorChannelはフローのトランザクションを開始しません。

これを達成する他の方法はありますか?

答えて

0

ポーリング間隔を(0に)減らし、受信タイムアウトを増やすことで、レイテンシを回避できます(スケジューラスレッドがメッセージを待つ犠牲にして)。エグゼキュータチャネルについては

、あなたは、例えばthis answerを参照するか、直接チャネル上でトランザクションを開始するためにAOPを使用send()エグゼキュータのどこかに下流(流れの中でトランザクションのゲートウェイを挿入することができます。