监视PoolingHttpClientConnectionManager的连接池

时间:2018-12-20 17:06:43

标签: apache-httpcomponents

我想监视Apache httpComponents PoolingHttpClientConnectionManager的连接池,但是找不到访问它的方法。

我们使用以下构建器创建HttpClient

HttpClient httpClient = HttpClientBuilder.create()
            .setMaxConnTotal(maxConnections)
            .setMaxConnPerRoute(maxConnectionsPerRoute)
            .build();

这将创建InternalHttpClient的实例,其中包含PoolingHttpClientConnectionManager的实例,CPool包含CPool的实例。

T getRoutes()将使我们能够访问PoolStats getStats(T)CPool -对我来说,这很有希望。但是我真的找不到如何访问此HttpClient.getConnectionManager()的机会。

InternalHttpClient.getConnectionManager()已过时。 { "HostedZones": [ { "Id": "Z3JX6LQV6IJO3E", "Name": "sandbox.mydomain.com." }, { "Id": "Z13M9NFG2E4J5N", "Name": "internal.mydomain.com." } ] } 不会被弃用,但会返回一个自定义连接管理器,该管理器仅在其后面公开真实连接管理器实例的某些方法。

那么,如何获取这些统计信息?这些对我们非常有帮助。

1 个答案:

答案 0 :(得分:1)

使用由ConnPoolControl实现的PoolingHttpClientConnectionManager

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
ConnPoolControl<HttpRoute> connPoolControl = cm;
CloseableHttpClient client = HttpClients.custom()
        .setConnectionManager(cm)
        .build();