java - 修复 Apache-Camel 的 Socket 处于“CLOSE_WAIT”状态的问题
问题描述
这是我第一次涉足骆驼,我可能会遗漏一些明显的东西,所以请善待。
我正在尝试纠正看到带有动态 URI 元素的 HTTP 端点使套接字处于 CLOSE_WAIT 状态的 Camel 问题。
在RedHat上查看问题和潜在的修复/解决方法后,我想按照他们所说的来解决我的问题。
但是,我不确定如何在我的代码上正确实现,因为 Camel 函数recipientList(...)
似乎导致了我的问题。
由于端点取决于 Exchange 信息(即标头中的 ID),因此使用了接收者列表,并且to()
仅接受静态端点 URI。
问题代码
.when(/* ID header not null */)
.setHeader(Exchange.HTTP_METHOD, constant("PUT"))
// This recipientList is causing the issue
.recipientList(simple(endpoint + '/' + ID_Placeholder + endpointParams))
.end()
尝试修复
该文档建议以下解决方案:
与其直接在端点上指定 URI,不如使用端点仅指定 Camel 参数,并使用交换标头 CamelHttpUri(在 Java 中,Exchange.HTTP_URI)指定 URI。
在我看来,我应该用recipientList
以下内容替换该行:
.setHeader(Exchange.HTTP_URI, simple(endpoint + '/' + ID_HEADER_PLACEHOLDER + endpointParams))
但是,我不确定数据将如何分发?
解决方案
推荐阅读
- sql - 如何通过使用数据源中的现有列创建计算字段,在 Tableau 中创建漏斗视觉/条形图?
- azure-devops - React JS Deployment with GitHub Actions Workflow 到 Azure Web App 构建文件夹问题
- java - 查找电子邮件附件的字节偏移量
- wpf - 未在 AppCenter for WPF (.Net Core) 中跟踪事件
- c++ - 通过 System() 打开时出现边缘第一个选项卡错误
- python - Seaborn:为双变量 histplot 设置 binrange
- flutter - type '(dynamic) => Null' 不是 '(String, dynamic) => void' of 'f' 的子类型
- java - Spring Boot 应用程序的 Azure 应用程序服务部署在 Jenkins 中不起作用
- angular-cli - 在 Angular 5 中按环境切换开发模式和产品模式
- linux - Linux通过名称掩码将文件从目录移动到目录