Я недавно начал играть с верблюдом Apache. Будучи экспериментальным типом, я подумал, что создам простой проект, который будет сканировать каталог файлов каждые пару секунд, чтобы увидеть, есть ли у меня новый файл, выбрать этот файл и затем скопировать его в другую папку. Позже я хочу поместить эти файлы в базу данных.
Итак, следуя основам, я создал маршрут, подобный следующему:
from("file://c:/CTest/inbox?noop=true")
.to("file://C:/Ctest/outbox");
Это сработало, и я подумал, хорошо, давайте добавим таймер. Сначала я допустил ошибку, используя таймер и попробовав следующее:
from("timer://myTimer?period=50").to("file://c:/CTest/inbox?noop=true")
.to("file://C:/Ctest/outbox");
У меня тогда было странное исключение из-за невозможности записать файл. Затем я понял, разместив файл route после того, как по таймеру route он стал продюсером. Поэтому я немного исследовал, и вот тут я немного растерялся.
Итак, насколько я понимаю, файловый компонент использует шаблон опроса по расписанию. Существует даже опция pollStrategy в шаблоне URL маршрута файла. Существует также EIP Polling Consumer.
Так вот, где начинается мое замешательство.
1) Если файловый компонент использует шаблон опроса по расписанию, использует ли он / реализует EIP?
2) Как добавить простое расписание в файловый компонент, чтобы использовать файлы, скажем, каждые 30 секунд?
3) Как мне создать собственную стратегию pollingStrategy с помощью реализации org.apache.camel.PollingConsumerPollStrategy?
Я подозреваю, что могу сделать что-то вроде этого:
from("file://c:/CTest/inbox?noop=true&pollStrategy=some-expression")
.to("file://C:/Ctest/outbox");
Я пытался привести некоторые примеры по этому поводу, но я либо не смотрю на правильные места, либо пропускаю сюжет полностью. Я полагаю, что это не столько вопрос, связанный с кодом, сколько вопрос о том, какова лучшая стратегия / шаблон для этого подхода.
Спасибо
Namphibian