0

だから私はSpring Integrationに不慣れで、ほとんどSpringにも慣れていないので、すべての用語を理解していないかもしれませんが、次のシナリオに出くわしています:

3 つの SI フローを持つ小さな Spring Integration アプリケーションがあります...各フローには独自のゲートウェイがあり、各ゲートウェイには独自の要求チャネルと応答チャネルがあります。これらのフローは、null 呼び出し (集中的な目的のため... 基本的には「GO」シグナル/空のメッセージのみ) を受け取り、(些細な) ビジネス ロジックの結果に応じて、ステータス メッセージで応答します。

これらの各フローを 1 つの「マスター フロー」で実行するように接続して、個別に実行する機能を奪うことなく、1 つの要求が与えられるようにしたいと思います。また、アノテーション / XML (IE.メイン ゲートウェイのサービス インターフェイスを呼び出すコントローラーがあれば、追加のコードを注釈 / XML 構成の外部に記述する必要はありません。)

これは実行可能ですか、そのためにどの統合コンポーネントを使用する必要がありますか、および/またはこれらのゲートウェイのそれぞれがエンドツーエンドで互いに会うために予想されるチャネルを調整する必要がありますか (そうであれば、その戦略はどのようになりますか?ケースバイケースで各フローを呼び出すことができるように補正します)?

さらに、これが実現不可能な場合、サービス アクティベーターを使用して各子フローを呼び出すことが適切でしょうか? これ以上コーディングを避けたかったのですが、それが唯一の選択肢である場合は、そうしなければならないと思います。

ありがとう!

4

1 に答える 1

1

おそらくこれを行う最も簡単な方法は、Spring プロファイル (Spring 3.1 の機能) を使用することです。スタンドアロン モードで展開すると、最後の要素は「どこにも通じない橋」になる可能性があります...

<int:bridge input-channel="app1Final" />

... フローの最後の要素に出力チャネルがない場合、メッセージはゲートウェイの応答チャネルに返されます。ゲートウェイの応答チャネルを指すようにブリッジを明示的に構成したい場合は、それも問題ありません。それは必要ありません。

「リンクされた」プロファイルでは、次のようにブリッジを構成します...

<int:bridge input-channel="app1Final" output-channel="app2Inbound"/>

... app2Inbound は、そのアプリのゲートウェイのリクエスト チャネルと同じです。

<beans profile="default">
    <int:bridge input-channel="app1Final" />
</beans>

<beans profile="linked">
    <int:bridge input-channel="app1Final" output-channel="app2Inbound"/>
</beans>

リンクされたプロファイルで実行するには、システム プロパティ 'spring.profiles.active' を 'linked' に設定します。

于 2012-07-26T22:33:31.423 に答える