Async Webサービスを実装する必要があります。 WebサービスのAsync WebサービスのJava ExecutorService
- 行動:
私たちは、サーバーへのアカウントのリクエストを送信し、それが承認IDと同期応答を返します。その後、私たちは、そのAcknowledgement IDを含む複数のCallback要求を取得します。確認応答IDの最後のコールバック要求には、レスポンスにテキスト(完了:true)が含まれます。これは、これがそのアカウントおよび確認応答IDの最後のコールバック要求であることを通知します。これにより、特定のアカウントの非同期呼び出しが完了し、その最終ステータスをマークすることができます。複数のアカウントに対してこのWebサービスを実行する必要があります。だから、私たちは多くのアカウントのコールバック要求を受け取ります。
- 質問:
複数のアカウントのために来て、これらの複数のコールバック要求を処理する最適な方法は何ですか。私たちが考える
- ソリューション:
- ExecutorServiceの固定スレッドプール:これは並列弊社のコールバック要求を処理しますが、懸念は、それが配列を維持しないということです。したがって、確認応答ID(アカウント)に対する最後のコールバック要求が来たと判断することは困難です。したがって、私たちは、そのアカウントの最終ステータスを豪快に完了したものとしてマークすることはできません。
- ExecutorServiceシングルスレッド実行者:ここでは、プール内にキューがunboudedのスレッドが1つしかありません。これを使用すると、実際に処理されるスレッドが1つだけなので処理がかなり遅くなります。
メモリとパフォーマンスの両方の要件を実装する最適な方法を提案してください。
WebサービスにはURLがありません。すべてのコールバックを送信していることを伝えます。また、私たちにすべて送信しても、最後のステータスは、すべて受信したかどうかによって決まります。 ExecutorService固定スレッドプールを続行するには、ExecutorService Single Thread Executorを使用する必要があります。 – pogo22
追加してください。彼らはすべてが戻って来なかったら偽を返します。それがアイデアです。スレッドプールはそれを変更しません。 – duffymo