背景:这是使用AIMDBackoffManager实例化HttpClient的正确方法吗?
我使用的HttpClient(SolrJ)连接到Solr的服务。但问题与Solr没有直接关系。
我在进行负载测试时遇到以下问题。
引起:java.lang.IllegalStateException:无效的BasicClientConnManager的使用:连接仍然分配。
SOF答案 - 使用连接池管理器
Invalid use of BasicClientConnManager: connection still allocated
问:
我使用的PoolingHttpClientConnectionManager如下面的代码。我不希望手动限制连接大小,而是使用AIMDBackoffManager来管理它。但是,我看到AIMDBackoffManager
需要连接池作为其参数。
public static final PoolingClientConnectionManager poolingConnectionManager = new PoolingClientConnectionManager();
public static DefaultHttpClient getHttpClient(){
DefaultHttpClient httpClient = new DefaultHttpClient(poolingConnectionManager);
httpClient.setBackoffManager(new AIMDBackoffManager(poolingConnectionManager));
...
...
}
我GOOGLE了公平一点,但我无法找到的BackoffManager
使用任何的例子。所以,这就是我所做的,但我并不兴奋将连接管理器两次传递给DefaultHttpClient
。或者我不应该担心考虑到我第一次将它传递给HttpClient
并且第二次将它传递给BackoffManager
?
我使用的HttpClient-4.2.3
同意@Peter。网上没有太多的帮助。 –
该功能的原始贡献者从来没有完全完成并记录它。请参阅https://issues.apache.org/jira/browse/HTTPCLIENT-1101。我们会很乐意把PR加以改进。 – oleg