Camel recipientList:如何防止线程泄漏

时间:2014-06-30 21:02:53

标签: apache-camel integration

我有一个类似于以下的路由到动态计算的HTTP URL:

from("file:in")
.recipientList(simple(jettyUrl + "?id=${exchangeId}"))
.to("file:out?fileName=abc");

在FAQ中描述:

http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

每次处理交换时,都会创建一个带有新线程池的新jetty组件。线程池是较新发布的。经过几次交流后,线程已经耗尽。

我正在使用Camel 2.12.2。在该版本中,不再可能将一个httpClient实例或执行程序设置为jetty组件以防止泄漏。在camel 2.11中删除了有用的选项httpClientThreadPool和httpClient。

如何在不泄漏线程的情况下请求包含查询参数的HTTP Url。

也许我的做法是错误的,有人可以指出我正确的方向。

1 个答案:

答案 0 :(得分:4)

我的做法错了。通过使用HTTP_QUERY或HTTP_URI标头,不再需要recipientList,只创建一个端点。因此,不再有线程泄漏。

.setHeader(Exchange.HTTP_URI, simple("http://somehost3244.org/id=${exchangeId}"))
.to("jetty:http://dummyhost243242.org")