誰かが私に何を説明しsetMaxPerRoute(max)、 setMaxTotal(max)HttpComponents PoolingHttpClientConnectionManager に関して何をすることができますか?
12834 次
1 に答える
39
これらの設定は、接続プールのサイズを制御します。
setMaxTotal(max)接続プールの全体的な接続制限を定義します。setMaxPerRoute(max)1 つの HTTP ルートあたりの接続制限を定義します。単純なケースでは、これはターゲット ホストごとの制限として理解できます。フードの下では、もう少し興味深いことがあります:のように、それぞれがホストのチェーンを表すHttpClientいくつかのオブジェクトを維持します。接続はルートごとにプールされます。単純なケースでは、デフォルトのルート構築メカニズムを使用していて、プロキシ サポートを提供していない場合、ルートにはターゲット ホストのみが含まれる可能性が高いため、ルートごとの接続プール制限は実質的にホストごとの制限になります。HttpRouteproxy1 -> proxy2 -> targetHost
例:
と があるとsetMaxPerRoute(5)しますsetMaxTotal(20)。つまり、ターゲット ホストごとに最大 5 つの接続を同時に使用できます。たとえば、google.com との 5 つの接続、oracle.com との別の 5 つの接続などです。ただし、開いている接続の合計数は、通信しているホストの数に関係なく 20 を超えることはできません。
于 2013-10-13T16:24:30.807 に答える