以前のバージョンのHttpClient
ターゲット ホストは、クライアント自体にセットアップされていました。最後のバージョン( 4.1.1の場合)では、リクエストを行うたびにホストが(など)HttpAsyncClient
に設定されます。HttpRequest
HttpGet
HttpPost
永続的な接続を使用したいので、使用しますHttpAsyncClient
。私は次のように作成して使用します。
CloseableHttpAsyncClient client = HttpAsyncClients.createDefault();
client.start();
List<Future<HttpResponse>> responses = new ArrayList<>();
for (int i = 0; i < 10; i++)
{
HttpGet get = new HttpGet("https://google.com/");
responses.add(client.execute(get, null));
}
for (Future<HttpResponse> response : responses) {
response.get(); //wait for the response
}
テストしたところ、通常よりも高速に動作HttpClient
します (すべての要求を実行してから、すべての応答を待つ場合)。
しかし、それが内部でどのように機能するか、完全には理解できません。との接続はhttps://google.com/
いくつ確立されていますか? client
あるホストに使用してから別のホストに使用するとどうなりますか? (私がテストしたように、応答は任意の順序で来る可能性があるため、少なくとも2つの接続が並行していると思います). HttpAsyncClients.createDefault()
とはどう違いHttpAsyncClients.createPipelining()
ますか?
ありがとう!