5

ゲートウェイとサービス アクティベーターを使用した応答処理に関するドキュメントが見つかりません。

ゲートウェイがある場合: 1) チャネル ReqChannel にリクエストを送信する 2) チャネル RepChannel で応答を受け入れる

ReqChannel はルーターに接続され、着信メッセージをサービス アクティベーターの 1 つ (AServiceActivator と BServiceActivator など) にルーティングし、そのサービス アクティベーターには output-channel="RepChannel" が構成されています。

また、ゲートウェイのインターフェースで複数のメソッド呼び出しを非同期に、または異なるスレッドから同時に実行した場合、ゲートウェイは着信応答を実際のサービス呼び出し元にどのように関連付けますか?

4

1 に答える 1

7

ゲートウェイは一時的な返信チャネルを作成し、それをメッセージのヘッダーに入れます。このメカニズムは、各メッセージが独自の応答チャネルを取得するため、必要な相関関係を提供します。

最後のコンシューマー (サービス アクティベーターなど) に出力チャネルがない場合、フレームワークは自動的に応答を replyChannel ヘッダーに送信します。

このため、通常、最終的なコンシューマーが送信するゲートウェイで応答チャネルを宣言する必要はありません。

ただし、返信チャネルを盗聴したり、発行/購読チャネルにしたい場合など、これが役立つ場合もあります。そのため、結果は複数の場所に行きます。

この場合 (ゲートウェイに応答チャネルがあり、最終的なコンシューマーがそこにメッセージを送信する場合)、フレームワークは、明示的に宣言された応答チャネルをメッセージ ヘッダーの一時的な応答チャネルに単純にブリッジします。

このため、フローで replyChannel ヘッダーを保持することが重要です。元のメッセージの replyChannel ヘッダーを含めない限り、reply-channel に任意の返信を送信することはできません。

于 2012-07-28T12:47:38.757 に答える