Apache HTTP 客户端只有两个连接是可能的

Uda*_*age 5 apache rest http httpclient

我有以下代码来使用 Apache HTTP 客户端调用 REST API 方法。但是,使用上述客户端只能发送两个并行请求。是否有任何参数可以设置最大连接数?

     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);
        }
Run Code Online (Sandbox Code Playgroud)

我正在使用的罐子如下,

org.apache.httpcomponents.httpclient_4.3.5.jar
org.apache.httpcomponents.httpcore_4.3.2.jar
Run Code Online (Sandbox Code Playgroud)

Pau*_*tha 10

您可以使用以下命令配置 HttpClient HttpClientConnectionManager

看看池连接管理器

ClientConnectionPoolManager 维护一个池 HttpClientConnections并能够为来自多个执行线程的连接请求提供服务。连接在每个路由的基础上汇集。对管理器已经在池中可用的持久连接的路由的请求将是通过从池中租用连接而不是创建全新连接的服务。

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

此示例显示了如何调整连接池参数:

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();
Run Code Online (Sandbox Code Playgroud)