java – 无法在Camel HTTP组件中配置“Keep Alive”
我正在为HTTP组件的正确设置遇到一些麻烦.目前,微服务从提供商处提取
JSON内容,处理它并将其发送到下一个服务以进行进一步处理.主要问题是这个微服务创建了大量的CLOSE_WAIT套接字连接.我知道“KEEP-ALIVE”的整个概念应保持连接打开,直到我关闭它,但服务器可能会因某些原因丢弃连接并创建此CLOSE_WAIT套接字.
我已经创建了一个用于调试/测试目的的小型服务,它可以向Google发送GET调用,但即使这个连接保持打开状态,直到我关闭程序.我尝试了很多不同的解决方案: > .setHeader(“连接”,常量(“关闭”)) 但我没有成功.所以也许你们中的一个可以帮助我: >我如何告诉Camel-HTTP它应该在特定时间过后关闭连接?例如,该服务每小时从内容提供商处提取. 3-4小时后,HttpComponent应在拉动后关闭连接,并在下一次拉动时重新打开.目前,每个连接都将被放回MultiThreadedHttpConnectionManager,并且套接字仍处于打开状态. 感谢大家的帮助 解决方法
您可以将自己的clientConnectionManager提供给HTTP4.通常,您应该使用org.apache.http.impl.conn.PoolingHttpClientConnectionManager的实例,您可以使用自己的org.apache.http.config.SocketConfig将其配置为连接管理器的setDefaultSocketConfig方法.
如果您使用Spring with Java config,那么您将拥有一个方法: @Bean PoolingHttpClientConnectionManager connectionManager() { SocketConfig socketConfig = SocketConfig.custom() .setSoKeepAlive(false) .setSoReuseAddress(true) .build(); PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); connectionManager.setDefaultSocketConfig(socketConfig); return connectionManager; } 然后你只需在端点定义中使用它,如下所示:clientConnectionManager = #connectionManager (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 在控制台应用程序中基于选项卡的自动完成
- 详解spring mvc 请求转发和重定向
- java – 为什么我不能.invokeExact()在这里,即使MethodType
- Mybatis中SqlMapper配置的扩展与应用详细介绍(1)
- java – 使用ConnectionPoolDataSource的连接
- java – 可以在eclipse中更改android项目的包名吗?
- Spring Boot启动流程断点过程解析
- docker-java Docker的java API
- Java发送GET、POST请求代码
- java – Spring Boot命令行属性不覆盖application.properti