Mar*_*mer 5 java sockets apache-camel
我在正确设置 HTTP 组件时遇到了一些麻烦。目前,微服务从提供者处提取 JSON 内容,对其进行处理并将其发送到下一个服务以进行进一步处理。主要问题是这个微服务创建了大量的 CLOSE_WAIT 套接字连接。我知道“KEEP-ALIVE”的整个概念将保持连接打开直到我关闭它,但服务器可能会出于某些原因断开连接并创建这个 CLOSE_WAIT 套接字。
我创建了一个用于调试/测试目的的小服务,它向 Google 发出 GET 调用,但即使此连接也保持打开状态,直到我关闭程序。我尝试了许多不同的解决方案:
但我没有成功。所以也许你们中的一个可以帮助我:
谢谢大家的帮助
您可以clientConnectionManager
向 HTTP4 提供您自己的。通常,您应该使用 的实例,您可以通过将其传递给连接管理器的方法来org.apache.http.impl.conn.PoolingHttpClientConnectionManager
配置您自己的实例。org.apache.http.config.SocketConfig
setDefaultSocketConfig
如果您将 Spring 与 Java 配置一起使用,您将有一个方法:
@Bean
PoolingHttpClientConnectionManager connectionManager() {
SocketConfig socketConfig = SocketConfig.custom()
.setSoKeepAlive(false)
.setSoReuseAddress(true)
.build();
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setDefaultSocketConfig(socketConfig);
return connectionManager;
}
Run Code Online (Sandbox Code Playgroud)
然后您只需在端点定义中使用它,如下所示:clientConnectionManager=#connectionManager