我想监视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."
}
]
}
不会被弃用,但会返回一个自定义连接管理器,该管理器仅在其后面公开真实连接管理器实例的某些方法。
那么,如何获取这些统计信息?这些对我们非常有帮助。
答案 0 :(得分:1)
使用由ConnPoolControl
实现的PoolingHttpClientConnectionManager
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
ConnPoolControl<HttpRoute> connPoolControl = cm;
CloseableHttpClient client = HttpClients.custom()
.setConnectionManager(cm)
.build();