3

私は、春の統合でバックエンドを改造しようとしているシステムを持っています。

このシステムのパターンのいくつかは、同じ Web サービスや HTTP サーバー (私は両方持っています) に複数のリクエストとわずかに異なるパラメーターをヒットすることを示しています。結果は集計され、ユーザーに表示されます。

リクエストがゲートウェイを介して着信し、各呼び出しのキー値を含むメッセージに「分割」されます(Aでの呼び出し、Bでの呼び出し、XYZでの呼び出し)。その後、各メッセージは HTTP アウトバウンド ゲートウェイに送られ、呼び出しが行われて返されます。その後、結果がまとめられ、ゲートウェイ経由で返送されます。

私が苦労しているのは、これらの HTTP 呼び出しを非同期的に行うことです。現在のシステムは、Futures を使用して、個別のスレッドで各呼び出しを行います。似たようなパターンでお願いします。

私がする必要があると思うのは、HTTP 送信ゲートウェイをラップする 2 つ目のゲートウェイを作成し、戻り値を使用して非同期呼び出しを作成することです。ただし、これが集約でどのように機能するかはわかりません。それについては、よりクリーンな方法があるはずだと感じています。Spring Integration を 3 年間使用する機会がなかったので、すべてを再学習しようとしています。

私は何かが欠けていますか、それともこれはあなたがそれを行う必要がある方法ですか?

4

1 に答える 1

3

チャネル (アウトバウンドゲートウェイがサブスクライブされている) ExecutorChannels ( http://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#executor-channelおよびhttp: //static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#channel-configuration-executorchannel )。

そうすれば、各リクエストは個別のスレッドで実行されます。集約の解放は、最終的なレスポンスを受け取るスレッドで行われます。元のスレッドはゲートウェイで応答を待ちます (または、非同期ゲートウェイを使用して Future を待つことができます。

于 2012-12-21T17:00:28.007 に答える