Apache DefaultHttpClient:如何设置最大值总连接数和默认最大值每条路线的连接

时间:2012-11-09 15:03:57

标签: java apache-httpclient-4.x

我正在使用单例DefaultHttpClient来制作每秒十几个并行的HTTP请求。我想知道如何以智能方式为下面的代码中的'PoolingClientConnectionManager'设置值 x(最大总连接数) y(每个路由的默认最大连接数)

我希望PoolingClientConnectionManager可以帮助我,以便在有负载峰值或负载比平常低得多时我不必更改这些值。我能做什么?或者我是否必须将值设置为总是大于我实际需要的值

...
PoolingClientConnectionManager poolingClientConnectionManager =
    new PoolingClientConnectionManager(sr, 20, TimeUnit.SECONDS);
poolingClientConnectionManager.setMaxTotal(x);
poolingClientConnectionManager.setDefaultMaxPerRoute(y);
return new DefaultHttpClient(poolingClientConnectionManager, new BasicHttpParams());

编辑:说poolingClientConnectionManager.setMaxTotal(Integer.MAX_VALUE)是一个好主意吗?

1 个答案:

答案 0 :(得分:2)

从版本4.2开始,可以使用BackoffManager根据使用持久连接的反馈动态调整可用连接池的大小。

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/AIMDBackoffManager.html