Опрос верблюжьего файла: завершите обработку пакета перед повторным опросом - PullRequest
0 голосов
/ 10 мая 2018

У меня есть конечная точка удаления файла, с которой я опрашиваю. Мне нужно опрашивать файлы в последовательном порядке по мере их поступления, и я использую выражение cron для опроса только в определенные часы дня. Вот мой файл ввода:

file:///tmp/input?idempotent=true&moveFailed=/tmp/error&readLock=changed&readLockCheckInterval=2500&sortBy=file:modified&move=processed/&scheduler=quartz2&scheduler.cron=0+0/5+0-3,5-23+*+*+?

Проблема, с которой я столкнулся, заключается в том, что Camel опрашивает пакет файлов, но затем в каталог записываются более новые файлы, поэтому при последующем опросе новый файл обрабатывается до завершения предыдущего пакета.

Я добавил некоторые свойства в свой маршрут, чтобы показать размер пакета и был ли он завершен только для некоторой информации:

<camel:log message="Camel batch size: $simple{property.CamelBatchSize}, Camel Batch Index: $simple{property.CamelBatchIndex}, Camel Batch finished: $simple{property.CamelBatchComplete}"/>

Как я могу сказать Camel не опрашивать, пока предыдущая партия не будет завершена? Я делаю это потому, что важен порядок обработки файлов. Спасибо!

1 Ответ

0 голосов
/ 11 мая 2018

Не уверен, существует ли какой-либо существующий метод для достижения вашей цели с помощью задания cron в файловом маршруте напрямую. Однако вы можете выполнить свою задачу, используя 3 маршрута.

  1. Cron маршрут работы

    • Подать сигнал приостановки на маршрут пробки, если маршрут Collector уже запущен (проверка через компонент controlBus)
    • Маршрут Startup Collector в правильное время (срабатывание компонента controlBus)
  2. Коллекторная трасса

    • Контроль поведения потребителя файла
    • При завершении партии отправлять сигнал завершения маршрута пробки
  3. Пробка маршрута

    • Приостановить маршрут коллектора при получении сигнала (инициируется компонентом controlBus)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...