#spring #spring-integration #spring-batch
#spring #spring-интеграция #spring-batch
Вопрос:
У меня есть пакетное интегрирование spring, в котором несколько серверов опрашивают один каталог файлов. Это вызывает проблему, когда файл может быть обработан более чем одним. Я попытался добавить nio-lock
в файл, как только сервер получил его, но это блокирует файл для обработки, поэтому он не может прочитать содержимое файла.
Существует ли пакетное / интеграционное решение spring для этой проблемы или есть способ переименовать файл, как только он будет получен узлом?
Ответ №1:
Рассмотрите возможность использования FileSystemPersistentAcceptOnceFileListFilter
с общим MetadataStore
: http://docs.spring.io/spring-integration/reference/html/system-management-chapter.html#metadata-store
Таким образом, только один экземпляр вашего приложения сможет получить файл.
Даже если мы найдем решение для nio-lock
, вы должны понимать, что блокировка означает «не трогать, пока не освободится». Поэтому, когда один экземпляр выполнил свою работу, другой готов забрать файл. Я думаю, это не ваша цель.
Комментарии:
1. Спасибо, Артем, я рассмотрю возможность использования этого.