起動時にインスタンスServlet
を構築するがあります。HttpClient
このクライアントは、リクエストを処理するときに使用されるコラボレーション モジュールと共有されます。FutureRequestExecutionService
コラボレーション モジュール内で APIを使用して、いくつかのリクエストを同時に簡単に送信したいと考えています。これには、HttpClient
インスタンスとともにインスタンスを使用する必要がありExecutorService
ます。チュートリアルでは、の最大同時接続数ExecutorService
と同じ数のスレッドを使用するように を設定することを推奨しています。HttpClient
futureRequestExecutionService のコンストラクタは、既存の httpClient インスタンスと ExecutorService インスタンスを受け取ります。両方を構成する場合、接続の最大数を使用するスレッドの数に合わせることが重要です。接続よりも多くのスレッドがある場合、使用可能な接続がないため、接続がタイムアウトし始めることがあります。スレッドよりも多くの接続がある場合、futureRequestExecutionService はそれらすべてを使用しません。
ExecutorService
共同作業モジュールは、同時リクエスト用の を作成するモジュールであるべきだと思いました。HttpClient
この場合の問題は、コラボレートするモジュールが、許可するように構成されている同時接続の数がわからないため、使用する必要があるスレッドの数を必ずしも認識していないことです。
HttpClient
のメソッドを使用できることはわかっていますgetConnectionManager
が、4.3 の時点でこれは推奨されていません。それでは、与えられた同時接続数を確認するための推奨される方法は何HttpClient
ですか? 間違った答えは、 のConnectionManager
ビルドに使用されたオブジェクトへの参照を保存し、HttpClient
それを共同作業モジュールと一緒に渡すか、ある種のグローバル定数を定義することだと思います。多分私は間違った質問をしています。
代わりに、、、およびオブジェクトをすべて同時に作成し、インスタンスだけを、共有クライアントを使用して HTTP 要求を行うモジュールに渡す
HttpClient
必要があります。HttpClient の作成者の意図と一致する方法でこれを行いたいと思います。この場合、それが正確に何であるかはわかりません。ExecutorService
FutureRequestExecutionService
FutureRequestExecutionService
編集:明確にするために、HttpClient
インスタンスは、接続マネージャーHttpClientBuilder
のセットを持つを使用して作成されます。ただし、これはおよびPoolingHttpClientConnectionManager
の作成と同じスコープでは発生しません。それらを一緒に作成してから、インスタンスを渡す代わりにインスタンスを使用する必要があるのではないかと疑い始めています。PoolingHttpClientConnectionManager
FutureRequestExecutionService
HttpClient
FutureRequestExecutionService