HttpClient中的setDefaultMaxPerRoute和setMaxTotal是什么意思?
What does setDefaultMaxPerRoute and setMaxTotal mean in HttpClient?
我在我的一个项目中使用 Apache HttpClient。我也在使用 PoolingHttpClientConnectionManager
和我的 HttpClient。
我搞不懂这些属性是什么意思。我尝试浏览代码中的文档,但没有看到有关这些变量的任何文档,因此无法理解。
- setMaxTotal
- setDefaultMaxPerRoute
- 设置连接超时
- 设置套接字超时
- 设置连接请求超时
- setStaleConnectionCheckEnabled
以下是我在代码中的使用方式:
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5 * 1000).setSocketTimeout(5 * 1000)
.setStaleConnectionCheckEnabled(false).build();
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();
poolingHttpClientConnectionManager.setMaxTotal(200);
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(20);
CloseableHttpClient httpClientBuilder = HttpClientBuilder.create()
.setConnectionManager(poolingHttpClientConnectionManager).setDefaultRequestConfig(requestConfig)
.build();
任何人都可以向我解释这些属性,以便我可以理解并决定我应该在其中输入什么值。另外,为了获得更好的性能,除了上面显示的之外,还有其他我应该使用的属性吗?
我正在使用 http-client 4.3.1
一些参数在http://hc.apache.org/httpclient-3.x/preference-api.html
中有解释
其他必须从源头收集。
- setMaxTotal
所有路由允许的最大连接数。
- setDefaultMaxPerRoute
未通过调用 setMaxPerRoute 指定的路由允许的最大连接数。当你提前知道路线时使用 setMaxPerRoute,当你不知道路线时使用 setDefaultMaxPerRoute。
- 设置连接超时
在抛出超时异常之前等待与远程服务器建立连接的时间。
- setSocketTimeout
在抛出超时异常之前等待服务器响应各种调用的时间。有关详细信息,请参阅 http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT。
- setConnectionRequestTimeout
在抛出异常之前尝试从连接池中检出连接时要等待多长时间(例如,如果所有连接都检出,连接池不会立即return)。 =13=]
- setStaleConnectionCheckEnabled
可以以潜在的 IOExceptions 为代价禁用以略微提高性能。参见 http://hc.apache.org/httpclient-3.x/performance.html#Stale_connection_check
我在我的一个项目中使用 Apache HttpClient。我也在使用 PoolingHttpClientConnectionManager
和我的 HttpClient。
我搞不懂这些属性是什么意思。我尝试浏览代码中的文档,但没有看到有关这些变量的任何文档,因此无法理解。
- setMaxTotal
- setDefaultMaxPerRoute
- 设置连接超时
- 设置套接字超时
- 设置连接请求超时
- setStaleConnectionCheckEnabled
以下是我在代码中的使用方式:
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5 * 1000).setSocketTimeout(5 * 1000)
.setStaleConnectionCheckEnabled(false).build();
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();
poolingHttpClientConnectionManager.setMaxTotal(200);
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(20);
CloseableHttpClient httpClientBuilder = HttpClientBuilder.create()
.setConnectionManager(poolingHttpClientConnectionManager).setDefaultRequestConfig(requestConfig)
.build();
任何人都可以向我解释这些属性,以便我可以理解并决定我应该在其中输入什么值。另外,为了获得更好的性能,除了上面显示的之外,还有其他我应该使用的属性吗?
我正在使用 http-client 4.3.1
一些参数在http://hc.apache.org/httpclient-3.x/preference-api.html
中有解释其他必须从源头收集。
- setMaxTotal
所有路由允许的最大连接数。
- setDefaultMaxPerRoute
未通过调用 setMaxPerRoute 指定的路由允许的最大连接数。当你提前知道路线时使用 setMaxPerRoute,当你不知道路线时使用 setDefaultMaxPerRoute。
- 设置连接超时
在抛出超时异常之前等待与远程服务器建立连接的时间。
- setSocketTimeout
在抛出超时异常之前等待服务器响应各种调用的时间。有关详细信息,请参阅 http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT。
- setConnectionRequestTimeout
在抛出异常之前尝试从连接池中检出连接时要等待多长时间(例如,如果所有连接都检出,连接池不会立即return)。 =13=]
- setStaleConnectionCheckEnabled
可以以潜在的 IOExceptions 为代价禁用以略微提高性能。参见 http://hc.apache.org/httpclient-3.x/performance.html#Stale_connection_check