3

我正在使用单例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)吗?

4

1 回答 1

2

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

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

于 2012-11-12T15:11:39.347 回答