代码之家  ›  专栏  ›  技术社区  ›  james

HttpComponents PoolingHttpClientConnectionManager最大PerRoute和最大Total?

  •  15
  • james  · 技术社区  · 12 年前

    有人能给我解释一下吗 setMaxPerRoute(max) setMaxTotal(max) 在引用HttpComponents PoolingHttpClientConnectionManager时做什么?

    1 回复  |  直到 12 年前
        1
  •  40
  •   Jk1    12 年前

    这些设置控制连接池的大小。

    • setMaxTotal(max) 定义连接池的总体连接限制。
    • setMaxPerRoute(max) 定义每个HTTP路由的连接限制。在简单的情况下,您可以将其理解为每个目标主机的限制。引擎盖下的东西更有趣: HttpClient 维持了几个 HttpRoute 对象,每个对象表示一个主机链,例如 proxy1 -> proxy2 -> targetHost 。连接是在每条路由的基础上合并的。在简单的情况下,当您使用默认的路由构建机制并且不提供代理支持时,您的路由可能只包括目标主机,因此每个路由连接池的限制实际上变成了每个主机的限制。

    例子:

    假设你有 setMaxPerRoute(5) setMaxTotal(20) 。这意味着你可以同时为每个目标主机使用多达5个连接:5个与google.com的连接,另外5个与oracle.com的连接等等。然而,无论你与多少主机通信,打开的连接总数都不能超过20个。