我有一个camel应用程序,我创建了以下结构
main thread
create Camel Context
addRoute(routeBuilder1)
addRoute(routeBuilder2)
context.start
RouteBuilder1
R11
R12
R13
R14
RouteBuilder2
R21
R22
在非常具体的情况下,我需要停止上下文(立即停止所有处理)。当我使用context.shutdown时,我注意到如果路由处理正在进行中,camel无法阻止它(称为gracefull shutdown),并且该路由继续处理。然而,在我的情况下,我需要立即努力阻止一切。
我们如何实现这一目标?
答案 0 :(得分:1)
设置DefaultShutdownStrategy的timeout
字段。
示例:
context.getShutdownStrategy().setTimeout(0);
context.getShutdownStrategy().setShutdownNowOnTimeout(true);
更新:
我不确定,但也许它可以使用1毫秒超时(你可以在shutdownStrategy上设置TimeUnit)
context.getShutdownStrategy().setTimeUnit(TimeUnit.MILLISECONDS);
context.getShutdownStrategy().setTimeout(1);
context.getShutdownStrategy().setShutdownNowOnTimeout(true)
答案 1 :(得分:0)
您是否看到过这个相关问题?
How to properly stop camelContext from being killed in a standalone application
也许你可以使用“kill -9”以同样的方式尝试。