【问题标题】:How to stop Camel Context immediately?如何立即停止骆驼上下文?
【发布时间】:2017-03-30 17:18:42
【问题描述】:

我有一个骆驼应用程序,我在下面的结构中创建

main thread 
        create Camel Context
          addRoute(routeBuilder1)
          addRoute(routeBuilder2)
        context.start

RouteBuilder1

    R11 
    R12
    R13
    R14

RouteBuilder2

    R21
    R22

在非常特殊的情况下,我需要停止上下文(立即停止所有处理)。当我使用 context.shutdown 时,我注意到如果正在进行路由处理,camel 无法停止它(称为优雅关闭),并且该路由继续处理。然而,就我而言,我需要立即停止一切。

我们怎样才能做到这一点?

【问题讨论】:

    标签: java apache-camel spring-scheduled


    【解决方案1】:

    你看过这个相关的问题吗?

    How to properly stop camelContext from being killed in a standalone application

    也许您可以使用“kill -9”以相同的方式尝试。

    【讨论】:

      【解决方案2】:

      设置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)
      

      【讨论】:

      • setTimeout(0); 不起作用,camel 需要正超时值。
      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 2017-11-08
      • 2014-10-27
      • 2018-08-15
      • 2017-08-15
      相关资源
      最近更新 更多