опрос файловой директории каждый вторник в 8:00 с использованием apache camel

#apache-camel

#apache-camel

Вопрос:

Я занят проектом apache camel, который автоматизирует процесс загрузки файла на SFTP-сервер каждый вторник в 8:00.

Я хочу установить задержку моего маршрута apache camel на: каждый вторник в 8:00.

Как бы я это сделал?

Допустим, «A» — это мое местоположение получения, а «B» — мое местоположение назначения.

Ответ №1:

Используйте компонент Quartz в качестве планировщика, pollEnrich для чтения файла и FTP-компонент для отправки его содержимого:

 from("quartz://myscheduler?cron=0 0 8 ? * THU")
    .pollEnrich("file:inbox?fileName=data.txt")
    .to("ftp://foo@127.0.0.1:21/?password=pwd")
  

Более подробную информацию о выражении cron можно найти здесь .

Комментарии:

1. Теперь мой код работает отлично. Спасибо за вашу помощь. Очень признателен.

Ответ №2:

Если вы используете Apache Camel 2.12 или лучше, тогда у потребителя файлов (и любого другого потребителя, основанного на планировщике) есть варианты использования планировщика cron из коробки, либо из spring, либо из quartz2.

Я написал запись в блоге об этом, обобщив об этом

Это опция планировщика

И на этой странице есть несколько примеров, см. Раздел QuartzScheduledPollConsumerScheduler

Ответ №3:

Обычно вы можете использовать camel-quartz компонент следующим образом:

 from("quartz://myscheduler?cron=0 0 8 * * 2")
    // do stuff
  

Но при втором взгляде я не уверен, как это будет работать в качестве потребителя sftp (вы можете сделать from("quartz...").from("sftp...") в camel? Я не уверен.

В этом потоке есть информация о том, как реализовать это через RoutePolicy .

Удачи.