【发布时间】:2015-06-19 06:33:25
【问题描述】:
我正在使用RestTemplate 和HttpComponentsClientHttpRequestFactory,如下所示:
private RestTemplate restTemplate = new RestTemplate();
// singleton class so only one instance
public DataProcess() {
restTemplate.setRequestFactory(clientHttpRequestFactory());
}
private ClientHttpRequestFactory clientHttpRequestFactory() {
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(1000).setConnectTimeout(1000)
.setSocketTimeout(1000).setStaleConnectionCheckEnabled(false).build();
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();
poolingHttpClientConnectionManager.setMaxTotal(300);
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(300);
CloseableHttpClient httpClientBuilder = HttpClientBuilder.create()
.setConnectionManager(poolingHttpClientConnectionManager).setMaxConnPerRoute(300).setMaxConnTotal(300)
.setDefaultRequestConfig(requestConfig).build();
requestFactory.setHttpClient(httpClientBuilder);
return requestFactory;
}
现在我的问题是:在PoolingHttpClientConnectionManager 对象中设置setMaxTotal 和setDefaultMaxPerRoute 与在CloseableHttpClient 中设置setMaxConnPerRoute 和setMaxConnTotal 有什么区别。我需要在这两个地方设置这些吗?
还有其他我们应该与 RestTemplate 一起使用的设置吗?我通过使用 RestTemplate 作为我的 HttpClient 来调用 Restful 服务,因此它必须很快,因为此代码将在多线程应用程序中运行。
【问题讨论】:
标签: java spring connection-pooling apache-httpclient-4.x resttemplate