如何使用Apache Camel定期处理一些输入

时间:2012-10-25 22:49:41

标签: apache-camel

我想知道是否有办法让Camel做我需要的事情,如下所示:

“定期从某些来源读取数据(假设是一个文件),对其进行一些处理并将其写入其他地方”

我想出了如何做到这一切,减去“周期性”部分。我知道如何使用Quartz或Timer触发路由。但是当我使用那些部分已经被采取所以我不能再改变身体了。

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您也可以使用预定路线政策 http://camel.apache.org/scheduledroutepolicy.html

答案 1 :(得分:4)

你可以用计时器/石英开始,然后使用content enricherpolling consumer

//using timer/pollEnrich to populate the body with the polling results
from("timer://foo?period=5000")
    .pollEnrich("file:inbox")
    .to("file:outbout");

//using time/polling consumer bean for more flexibility and multiple polling
from("timer://foo?period=5000")
    .bean(myPollingConsumerBean, "doIt");

public static class MyPollingConsumerBean {
...
    public void doIt() {
      while (true) {
        String msg = consumer.receiveBody("file:inbox", 3000, String.class);
        if (msg == null) {
            break;
        }
        producer.sendBody("file:outbox", msg);
      }
    }
}