2

次のように、Camelに必要なことをさせる方法があるのだろうか:

「何らかのソース (ファイルとしましょう) から定期的にデータを読み取り、何らかの処理を行い、別の場所に書き込みます」

「定期的に」部分を除いて、すべてを行う方法を見つけました。Quartz または Timer を使用してルートをトリガーする方法を知っています。しかし、それらを使用すると、その部分はすでに使用されているため、これ以上ボディを変更することはできません.

何かアドバイス?

4

2 に答える 2

5

スケジュールされたルート ポリシーも使用できます http://camel.apache.org/scheduledroutepolicy.html

于 2012-10-26T06:36:32.840 に答える
4

timer/quartz で開始してから、コンテンツ エンリッチャーまたはポーリング コンシューマーのいずれかを使用できます。

//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);
      }
    }
}
于 2012-10-26T02:49:36.263 に答える