Spring Integration: предотвращает дублирование в многоузловой среде
У меня есть файл, который опрашивается входящим адаптером. Что касается среды, у меня есть несколько узлов, опрашивающих один файл, который находится в расположении NAS (видимом для всех) и предотвращает дублирование, это правда.
Удивительно, но если я помещаю файл несколько раз, ни один из узлов не выбирает файл, пока сервер не будет перезапущен.
Предполагая, что пружинная интеграция использовалась для сохранения этой информации в контексте весны, она должна была быть выбрана другими узлами, если она пропущена одним.
Может кто-нибудь объяснить, где хранится этот флаг или метаданные?
1 ответ
Смотрите документацию. Тебе необходимо FileSystemPersistentAcceptOnceFileListFilter
с общим MetadataStore
,
По умолчанию на основе памяти AcceptOnceFileListFilter
используется, который не учитывает время изменения файла.
AcceptOnceFileListFilter сохраняет свое состояние в памяти. Если вы хотите, чтобы состояние сохранялось при перезагрузке системы, рассмотрите возможность использования FileSystemPersistentAcceptOnceFileListFilter. Этот фильтр сохраняет принятые имена файлов в реализации MetadataStore (Раздел 9.5, "Хранилище метаданных"). Этот фильтр соответствует имени файла и времени изменения.