允许Camel上下文永远运行

时间:2016-08-17 19:23:54

标签: spring apache-camel

我正在使用springCamelContext的camel-spring jar。当我启动驼峰上下文时,它运行5分钟(默认时间)。我可以让我的线程睡眠一段时间,即

object Driver {
    def main(args: Array[String]) {
        ...
    }

    object GroupConcat extends UserDefinedAggregateFunction {
        ...
    }
}

但我想要的是我的camelContext运行FOREVER,因为这个应用程序将被部署,它将监听来自KAFKA服务器的消息。我知道有一个班级

try {
            camelContext.start();
            Thread.sleep(50 * 60 * 1000);
            camelContext.stop();
        } catch (Exception e) {
            e.printStackTrace();
        }

但我不知道如何使用springCamelContext配置它或不确定是否有其他方法。感谢

更新:即使我删除了camelContext.stop(),上下文会在一段时间后停止,我会得到以下日志:

org.apache.camel.spring.Main

3 个答案:

答案 0 :(得分:5)

请参阅此示例,了解如何使Camel保持运行:http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html

答案 1 :(得分:1)

这是一个永久运行的最小示例,它仅将文件从一个文件夹复制到另一个文件夹:

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.main.Main;

public class FileWriteRoute {

    public static void main(String[] args) throws Exception {

        Main main = new Main();

        main.addRouteBuilder(new RouteBuilder() {

            public void configure() {
                from("file://D:/dev/playground/camel-activemq/src/data")
                        .to("file://D:/dev/playground/camel-activemq/src/data_out");
            }
        });

        main.run();
    }
}

答案 2 :(得分:0)

如果您在类中定义了Route,请尝试:

public static void main(String[] args) throws Exception {

  Main main = new Main();
  CamelContext context = main.getOrCreateCamelContext();
  try {
    context.addRoutes(new YOURROUTECLASS());
    context.start();
    main.run();
  }
  catch (Exception e){
    enter code here
  }
 }