Apache Camel - «Невозможно получить блокировку чтения» - PullRequest
0 голосов
/ 04 августа 2020

Я использую Apache Camel версии 2.24.2.

У меня есть два сервера приложений, которые опрашивают общий каталог для сбора и обработки файлов. Файлы небольшие - всего несколько КБ.

Я использую следующее в определении маршрута для этого процесса:

file://${my.folder}?readLock=changed&readLockMinAge=${minAge}&inProgressRepository=#messageIdRepository&delay=${delay}&include=${include}

Файлы должны быть определенного возраста (чтобы гарантировать они полностью написаны), и я использую идемпотентный репозиторий, чтобы гарантировать, что каждый файл обрабатывается только один раз. Я опрашиваю каталог каждые 10 секунд.

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

Cannot acquire read lock within 20000 millis. Will skip the file: RemoteFile[myFile.xml]

Затем файл ".camelLock" удаляется из общего каталога до того, как один из двух серверов приложений установит блокировку. файл (создав другой файл «.camelLock») и повторите попытку.

Мой подход неверен?

...