1

我需要能够在 RouteBuilder 之外启动和停止路由......所以我有一个类来监视外部服务并打开和关闭路由。基本上我希望路由停止消费新请求并处理当前飞行中的请求。

所以我有一个计划任务,每 x 秒运行一次,它会打开和关闭服务。但我发现停止和启动路线会导致它泄漏线程。

基本代码:

 for(int iCount=0;iCount<10;iCount++) {
   camelContext.stopRoute(TEST_ROUTE);
   camelContext.startRoute(TEST_ROUTE);
 }

这似乎创建了 10 个额外的线程。有没有人遇到过这个?

注意:我考虑过使用挂起/恢复以及使用 RoutePolicy。但是我想知道为什么 Camel 在使用 Start/Stop 路由时会泄漏线程。

我在这里错过了什么吗?

4

2 回答 2

0

这个 Camel JIRA描述了您报告的问题。最好咨询 JIRA。

于 2013-06-14T03:32:15.283 回答
0

当 Camel 停止路由时,它使用后台线程来控制正常关闭,您可以在 Camel 网站http://camel.apache.org/graceful-shutdown.html上阅读相关内容

当您提出关于 SO 的问题时,请提供更多详细信息,例如您看到的 10 个线程是什么?还有你使用什么版本的骆驼等等。还有你开始/停止的路线的代码等等。

于 2013-02-25T17:55:22.787 回答