首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache HTTP客户端只能有两个连接

Apache HTTP客户端只能有两个连接
EN

Stack Overflow用户
提问于 2014-10-01 17:07:36
回答 1查看 9.5K关注 0票数 5

我有以下使用Apache HTTP客户端调用REST API方法的代码。但是,使用上述客户端只能发送两个并行请求。有没有设置max-connections的参数?

代码语言:javascript
复制
     HttpPost post = new HttpPost(resourcePath);
            addPayloadJsonString(payload, post);//set a String Entity
            setAuthHeader(post);// set Authorization: Basic header
            try {
                return httpClient.execute(post);

            } catch (IOException e) {
                String errorMsg = "Error while executing POST statement";
                log.error(errorMsg, e);


  throw new RestClientException(errorMsg, e);
        }

我使用的Jars如下所示:

代码语言:javascript
复制
org.apache.httpcomponents.httpclient_4.3.5.jar
org.apache.httpcomponents.httpcore_4.3.2.jar
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-01 18:30:16

您可以使用HttpClientConnectionManager配置HttpClient

看看Pooling connection manager吧。

ClientConnectionPoolManager维护一个HttpClientConnections池,并能够为来自多个执行线程的连接请求提供服务。连接以每条路由为单位进行池化。通过从池中租用连接而不是创建全新的连接,对已经在池中可用的管理器具有持久连接的路由的请求将是服务。

PoolingHttpClientConnectionManager在每个路由的基础上和总连接数上维护最大连接限制。默认情况下,此实现将为每个给定路由创建不超过2个并发连接,总共不超过20个连接。对于许多现实世界的应用程序来说,这些限制可能会被证明过于约束,特别是当它们使用HTTP作为其服务的传输协议时。

此示例说明如何调整连接池参数:

代码语言:javascript
复制
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
// Increase max total connection to 200
cm.setMaxTotal(200);
// Increase default max connection per route to 20
cm.setDefaultMaxPerRoute(20);
// Increase max connections for localhost:80 to 50
HttpHost localhost = new HttpHost("locahost", 80);
cm.setMaxPerRoute(new HttpRoute(localhost), 50);

CloseableHttpClient httpClient = HttpClients.custom()
        .setConnectionManager(cm)
        .build();
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26137818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档