2013-02-21 92 views
1

我需要能够启动和停止RouteBuilder之外的路由......所以我有一个类监视外部服务并打开和关闭路由。基本上我想要这条路线停止消耗新的请求并处理当前的空中路线。骆驼stopRoute startRoute泄漏线程

因此,我有一个计划任务,每隔x秒运行一次,即打开和关闭服务。但我发现停止和开始路线导致它泄漏线程。

Basic代码:

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

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

注意:我已考虑使用挂起/恢复和还使用RoutePolicy。但我想知道为什么骆驼在使用启动/停止路由时会泄露线程。

我在这里错过了什么吗?

+0

我曾经观察过这种行为,在那里我定期停下来,并开始使用2.9.0版本的路线。我记得当时在我的搜索过程中,这个问题在2.10.0或更高的版本中被修正了。由于我的要求不再需要定期停止启动路线,因此我有机会对其进行测试。 – techuser 2013-02-27 04:14:34

回答

0

当骆驼停止它使用一个后台线程来控制正常关机,你可以在骆驼网站http://camel.apache.org/graceful-shutdown.html

了解而当你问一个问题,关于这样的话提供更多的细节,例如路线是什么你看到的10个线程?还有你使用的骆驼什么版本等。以及你开始/停止的路线代码等。