Apache Camel Idempotent Consumer для файла - PullRequest
0 голосов
/ 10 июля 2020

У меня есть один физический сервер, на котором работают два экземпляра Apache Camel. Оба содержат одинаковые артефакты интеграции. Задача заключается в интеграции файлов из файловой системы сервера с файловым компонентом Apache Camel, запускаемым заданием cron. Обработка файла должна выполняться только один раз. Поэтому я использую идемпотентный шаблон с репозиторием Jdb c на том же сервере.

В целом он работает нормально. Но иногда, в некоторых случаях, оба экземпляра запускают и читают файл, поэтому файл обрабатывается дважды. В базе данных JDB C ключ также вставляется дважды (даже метка времени создания почти такая же; она отличается на третьем ди git миллисекундах).

Вот как Я использую потребителя файла:

<from uri="file:{{property.file.directory}}?scheduler=quartz2
                    &;scheduler.cron={{property.file.cronjob}}?
                    &idempotent=true
                    &readLock=idempotent
                    &idempotentKey=${file:name}-${file:size}-${date:file:yyyy-MM}
                    &idempotentRepository=#idempotentRepository"/>

Кто-нибудь знает, что мне нужно, чтобы файл был готов только один раз ??

С уважением, ian

1 Ответ

0 голосов
/ 12 июля 2020

Вы можете использовать кластерный кварц для своего сценария. http://www.quartz-scheduler.org/documentation/quartz-1.8.6/configuration/ConfigJDBCJobStoreClustering.html

...