从Camel Route重新加载属性而不停止它

时间:2017-08-03 15:18:07

标签: apache-camel


我试图想出一种方法来动态更新属性(从PropertyComponent)而不停止Camel Route: 这是一个例子:

@Override
public void configure() throws Exception {
        CamelContext ctx = super.getContext();
        PropertiesComponent pc = new PropertiesComponent();
        pc.setLocation("/tmp/apache-deltaspike.properties");
        ctx.addComponent("properties", pc);

        // Logs Hello World every 2000 milliseconds
        from("timer://myEapTimer?fixedRate=true&period=2000")
            .log(LoggingLevel.INFO, "com.sample.route", "{{customProperty}}")
            .to("log:HelloWorldLog?level=INFO");

}

外部属性文件包含每次定时触发时要打印的消息。我需要找到一种方法让Route重新加载Property文件而不停止它。 顺便说一下,我正在使用Apache Camel 2.17.0。 感谢

1 个答案:

答案 0 :(得分:1)

这是不可能的,{{xxx}}只在路线启动时解决一次。

您可以使用Java bean自己加载属性文件并获取值并在那里进行日志记录。

或者您可以使用bean参数绑定调用Java bean并注入属性值。但是,您还需要将属性组件配置为不使用缓存等。