我需要能够在RouteBuilder之外启动和停止路由...所以我有一个监控外部服务的类并打开和关闭路由。基本上我希望路由停止消耗新请求并处理当前的空中请求。
所以我有一个每x秒运行一次的计划任务,可以打开和关闭服务。但我发现停止和启动路线会导致它泄漏线程。
基本代码:
for(int iCount=0;iCount<10;iCount++) {
camelContext.stopRoute(TEST_ROUTE);
camelContext.startRoute(TEST_ROUTE);
}
这似乎创建了10个额外的线程。有没有人遇到过这个?
注意:我考虑过使用suspend / Resume并使用RoutePolicy。但我想知道为什么Camel在使用Start / Stop路径时会泄漏线程。
我在这里遗漏了什么吗?
答案 0 :(得分:0)
当Camel停止路线时,它使用后台线程来控制正常关闭,您可以在Camel网站上阅读http://camel.apache.org/graceful-shutdown.html
当您在SO上提出问题时,请提供更多详细信息,例如您看到的10个主题是什么?还有你使用的Camel版本等。还有你开始/停止等路线的代码。
答案 1 :(得分:0)
This Camel JIRA描述了您报告的问题。最好咨询JIRA。