有人可以向我解释一下什么吗setMaxPerRoute(max)
and setMaxTotal(max)
参考 HttpComponents PoolingHttpClientConnectionManager 做什么?
这些设置控制连接池的大小。
-
setMaxTotal(max)
定义连接池的总体连接限制。
-
setMaxPerRoute(max)
定义每个 HTTP 路由的连接限制。在简单的情况下,您可以将其理解为每个目标主机的限制。在幕后的事情有点更有趣:HttpClient
维持几个HttpRoute
对象,每个对象代表一个主机链,例如proxy1 -> proxy2 -> targetHost
。连接按路由进行池化。在简单的情况下,当您使用默认路由构建机制并且不提供代理支持时,您的路由可能仅包含目标主机,因此每个路由的连接池限制实际上变成了每个主机的限制。
Example:
假设你有setMaxPerRoute(5)
and setMaxTotal(20)
。这意味着每个目标主机最多可以同时使用 5 个连接:5 个与 google.com 的连接,另外 5 个与 oracle.com 的连接,依此类推。然而,无论您正在与多少台主机进行通信,打开的连接总数都不能超过 20 个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)