0

私はSpring統合で遊んでいますが、次の問題を解決する最善の方法がわかりません。

XML メッセージがチャネルに到着したとします。これらのメッセージは任意の構造を持つ可能性があり、正規の形式に変換したいので、必要な処理とエラー チェックを実行できるように、構造の種類ごとにカスタム コンバーターを作成したいと考えています。

明らかなことは、ルーターを配線してメッセージを確認し、適切なコンバーターにルーティングすることですが、これは、各コンバーターを指すチャネルに処理フローをハードコーディングする必要があることを意味すると思います。

さまざまなコンバーターとルーティング ロジックでのハード コンフィギュレーションは避けたいと思います。代わりに思いつくのは、何らかの種類のboolean canHandle(message).メッセージを主張するか、私たちが使い果たします。このように、処理フローを実際に変更することなく、コンバーターに注釈を付けて構成できるように思われます。

私はSpring統合に慣れていないので、これを誤解している可能性があります。Spring 統合でこれを行う標準的な方法はありますか?

4

1 に答える 1

1

これを行うにはいくつかの方法があります。最初に頭に浮かんだのは、セレクター式を使用した受信者リスト ルーターです。

<recipient-list-router id="simpleDynamicRouter" input-channel="simpleDynamicInput">
    <recipient selector-expression="@handler1.canHandle(payload)" channel="toHandler1"/>
    <recipient selector-expression="@handler2.canHandle(payload)" channel="toHandler2"/>
    <recipient selector-expression="@handler3.canHandle(payload)" channel="toHandler3"/>    
</recipient-list-router>

<transformer ... ref="handler1" />
<transformer ... ref="handler2" />
<transformer ... ref="handler3" />

handler1 などは、実装の <bean/> と canHandle() メソッドです。

もう 1 つのオプションは、独自のカスタム動的ルーターを作成することです。ここにそれを行う方法の例がありますhttps://github.com/SpringSource/spring-integration-samples/tree/master/advanced/dynamic-ftp

于 2012-08-03T13:51:15.207 に答える