首页 > 解决方案 > 修复 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))

但是,我不确定数据将如何分发?

标签: javaapache-camel

解决方案


推荐阅读