14

誰かが私に何を説明しsetMaxPerRoute(max) setMaxTotal(max)HttpComponents PoolingHttpClientConnectionManager に関して何をすることができますか?

4

1 に答える 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 に答える