Web サービス A の一部として、別の Web サービス B を呼び出す必要があります。
A の呼び出し元に与えられる応答は、B に依存するべきではありません。つまり、B の結果に関係なく、呼び出し元に応答を返す必要があります。B には時間がかかる可能性があることを考慮してください。
A と B を呼び出すシステムはどちらも異なります。どうすればこれを達成できますか?
注: RESTful Web サービス/Java の使用
Web サービス A の一部として、別の Web サービス B を呼び出す必要があります。
A の呼び出し元に与えられる応答は、B に依存するべきではありません。つまり、B の結果に関係なく、呼び出し元に応答を返す必要があります。B には時間がかかる可能性があることを考慮してください。
A と B を呼び出すシステムはどちらも異なります。どうすればこれを達成できますか?
注: RESTful Web サービス/Java の使用
クライアントはWeb サービス A操作を非同期的に呼び出す必要があります。
Web サービス Aは、 Web サービス B操作も非同期で呼び出す必要があります。
これにより、 Web サービス Bの結果に関係なく、クライアントは常に応答を受け取ります。
ほとんどの REST フレームワークには、既に非同期呼び出しがサポートされています。
リリースされると、JAX-RS 2.0は非同期 HTTPをサポートします。
Apache CXF の使用:非同期クライアント HTTP トランスポート
Resteasy の使用:非同期 HTTP リクエスト処理
サードパーティのライブラリを気にしない場合は、jetty-client を使用してください: http://www.supermind.org/blog/1023/non-blocking-nio-http-requests-in-java-with-jettys-httpclient
Maven パッケージの説明は次のとおりです: http://mvnrepository.com/artifact/org.eclipse.jetty/jetty-client
与えられた要件に従って、
クライアントからサービス A への呼び出しは、あなたのケースでは同期的な Restful 呼び出しにすることができます。サービス A からサービス B への呼び出しは非同期です。
そのため、通常どおり、クライアントとサービス A の間の安らかな接続を使用します。
Call Service A -> Service B の場合、使用する必要がある JMS の概念、たとえば要求キューと応答キュー。 これらは通常、2 つの一方向リクエストとして実装されます。