有人能向我解释setMaxPerRoute(max)
和setMaxTotal(max)
在参考HttpComponents PoolingHttpClientConnectionManager时做了什么吗?
这些设置控制连接池大小。
setMaxTotal(max)
定义连接池的总体连接限制。setMaxPerRoute(max)
定义了每个HTTP路由的连接限制。在简单的情况下,您可以将其理解为每个目标主机的限制。在幕后,事情有点有趣:HttpClient
维护了几个HttpRoute
对象,每个对象代表一个主机链,如proxy1-
示例:
假设您有setMaxPerRoute(5)
和setMaxTotal(20)
。这意味着您可以同时为每个目标主机使用多达5个连接:5个连接google.com,另外5个连接oracle.com,依此类推。然而,无论您与多少主机通信,打开的连接总数都不能超过20个。