2017-05-11 15 views
0

複数のエンドポイントを使用してメッセージを処理する必要があるメッセージ処理パイプラインを設計しようとしています。各段階で、エンドポイントはペイロード(変換可能)またはエラー・メッセージのいずれかを戻します。ここで私は私の心の中に持っているものの一般的な例です:Spring統合 - パイプライン処理 - デザイン

<int:payload-type-router input-channel="preprocessing-output"> 
     <int:mapping type="com.example.Error" channel="error" /> 
     <int:mapping type="com.example.PreprocessedDomainObject" channel="validation-input"/> 
</int:payload-type-router> 

<int:service-activator input-channel="validation-input" 
     ref="validationService" method="validate" output-channel="validation-output"/> 

<int:payload-type-router input-channel="validation-output"> 
      <int:mapping type="com.example.Error" channel="error" /> 
      <int:mapping type="com.example.CouldBeAnotherObject" channel="processor-input"/> 
</int:payload-type-router> 

ように、この処理チェーンは非常に長くなることが...すべてのステージの後に代わりペイロードタイプのルータのこれを設計するためのより良い方法はありますか?キンダは冗長だと感じています。

答えて

0

さて、私は例外に基づいてそれを作るだろう。検証サービスは例外をスローするだけで、呼び出し側で呼び出しをキャッチするか、着信チャネルアダプタであればerrorChannelが必要です。

そういう意味では、これらのルータの定義は必要ありませんし、チェーンを呼び出す単純なサービスも必要ありません。

関連する問題