Apache camel Camel recipientList:如何防止线程泄漏

Apache camel Camel recipientList:如何防止线程泄漏,apache-camel,integration,Apache Camel,Integration,我有一个到动态计算HTTP URL的路由,如下所示: from("file:in") .recipientList(simple(jettyUrl + "?id=${exchangeId}")) .to("file:out?fileName=abc"); 如常见问题解答中所述: 每次处理exchange时,都会创建一个带有新线程池的新jetty组件。线程池是较新发布的。在两次交换之后,线程将耗尽 我用的是骆驼2.12.2。在该版本中,无法再为jetty组件设置httpClient实例或执行器

我有一个到动态计算HTTP URL的路由,如下所示:

from("file:in")
.recipientList(simple(jettyUrl + "?id=${exchangeId}"))
.to("file:out?fileName=abc");
如常见问题解答中所述:

每次处理exchange时,都会创建一个带有新线程池的新jetty组件。线程池是较新发布的。在两次交换之后,线程将耗尽

我用的是骆驼2.12.2。在该版本中,无法再为jetty组件设置httpClient实例或执行器来防止泄漏。在camel 2.11中删除了有用的选项httpClientThreadPool和httpClient

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


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

我的方法是错误的。通过使用HTTP_查询或HTTP_URI头,不再需要recipientList,只创建一个端点。因此,不再有螺纹泄漏

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

是的,这是正确的方法,如果您想调用同一个主机,那么就将这些头用于动态部件,但只需像您一样使用.to即可重用相同的实际端点。