#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
.
Удачи.