Обработка только измененных файлов с использованием Apache Camel - PullRequest
0 голосов
/ 08 октября 2019

У меня появилось новое требование для реализации с использованием Apache Camel.

  1. обработать файл, не перемещая его
  2. обработать файл, только если он был изменен
  3. нормально обрабатывать тот же файл снова
  4. этоне должен обрабатывать новый файл.

Поскольку я новичок в Apache Camel, я изучил особенности файлового компонента и получил несколько примеров и смог набрать первые 3 балла, используя приведенный ниже код.

from("file:C://inputFolder?idempotentKey=${file:name}-${file:modified}&noop=true")
    .to("file:C://outputFolder");

Однако не смог достичь 4-го очка. Приведенный выше код выбирает новый файл, который только что был создан (имеется в виду, что дата создания и дата изменения совпадают).

Может ли кто-нибудь помочь мне достичь 4-го пункта (т. Е. Он не должен брать новый файл в этом каталоге)

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

С Camel 3.0 Вы можете использовать File-Watch Component . Решение может быть похоже на Создание снимка файла при изменении пример.

from("file-watch:C://inputFolder?events=MODIFY&recursive=false")
    .to("file:C://outputFolder");
0 голосов
/ 10 октября 2019

Нет способа посмотреть, когда файл был создан в Camel, как я вижу. Возможный обходной путь здесь заключается в использовании подхода переименования вместе с параметром antInclude, например

from("file:C://inputFolder?idempotentKey=${file:name}-${file:modified}&noop=true&antInclude=*.modified")
    .to("file:C://outputFolder");

. В этом случае необходимо создать новый файл с другим расширением, например myfile.created, а затем переименовать в myfile.modified после первого изменения

...