监控 PoolingHttpClientConnectionManager 的连接池

Monitor connection pool of PoolingHttpClientConnectionManager

我想监控 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()并没有被弃用,而是returns一个自定义的连接管理器,它只暴露了它背后真正的连接管理器实例的一些方法。

那么,如何访问这些统计数据?这些对我们很有帮助。

使用由 PoolingHttpClientConnectionManager

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