Apache Camel中的属性的编程使用

时间:2015-08-27 14:22:32

标签: properties apache-camel

我正在使用Apache Camel开始一个项目,并希望添加一种方法来存储一些信息作为属性。大多数示例似乎都使用了Spring和XML,但是我采用Java DSL的方式,并且似乎无法找到关于如何正确执行此操作的良好示例。

我使用camel-archetype-java archetype创建了一个项目,到目前为止只添加了Quartz和一个路由:

package com.commserv.integration;

import org.apache.camel.builder.RouteBuilder;

public class FilemakerCsvToMailroom extends RouteBuilder {

  public void configure() {

    from("file:/Volumes/Data-1/Camel?autoCreate=false&startingDirectoryMustExist=true&noop=true&scheduler=quartz2&scheduler.cron=0+*+*+*+*+?&scheduler.triggerId=EveryMinute&scheduler.triggerGroup=FilemakerCsvToMailroom") // every minute
      .routeId("FilemakerCsvToMailroom")
      .log("FilemakerCsvToMailroom triggered");

  }

}

可以在this link查看项目代码。

  • 我在哪里将我的属性文件添加到此类项目中? (我反复地将它添加到src / main / resources,因为原型在那里有一个类似的log4j文件。)
  • 如何在不使用XML的情况下在项目的上述路径中使用它?我使用Property Component吗?该链接上的文档的问题在于,简短示例均引用context变量,但不确定其来自何处。

1 个答案:

答案 0 :(得分:1)

您可以将属性文件添加到src / main / resources。

您可以使用Java配置Properties Component:

public void configure() {
    PropertiesComponent pc = new PropertiesComponent();
    pc.setLocation("classpath:myprop.properties");
    getContext().addComponent("properties", pc);

    // Will output "result1" every 5 seconds.
    from("timer:mytimer?period=5s")
    .log("{{dev.endpoint}}");
}

如果您有包含

的属性文件src / main / resources / myprop.properties
dev.endpoint = result1
test.endpoint = result2

请注意,您可以在RouteBuilder中调用getContext()来获取正在运行的Camel上下文。