如何立即停止Camel Context?

时间:2017-03-30 17:18:43

标签: java apache-camel spring-scheduled

我有一个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),并且该路由继续处理。然而,在我的情况下,我需要立即努力阻止一切。

我们如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

设置DefaultShutdownStrategytimeout字段。

示例:

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”以同样的方式尝试。