Я использую 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») и повторите попытку.
Мой подход неверен?