在 Apache Camel 中以编程方式使用属性

Programatic Use Of Properties In Apache Camel

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

我从 c​​amel-archetype-java 原型创建了一个项目,到目前为止只添加了 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。

您可以像这样使用 Java 配置属性组件:

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 上下文。