Spring Integration File Poller - фильтр с возможностью записи в файл

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

Я нашел эту тему в 'file-inbound-channel-cannot-to- read-file », в которых предлагается использовать настраиваемый фильтр, проверяющий, доступен ли файл для чтения перед обработкой.

Эта вторая тема 'Как узнать, выполняется ли копирование файла" предполагает, что файл должен быть доступен для записи, прежде чем его можно будет считать готовым к обработке.

Я мог ожидать, что эта проверка того, что файл доступен для чтения / записи, уже будет выполняться основным кодом интеграции Spring ?.

Тем временем я планирую создать фильтр по первой теме, но с использованием проверки «rw», которую предлагает вторая.


person emeraldjava    schedule 19.05.2014    source источник


Ответы (1)


Это классическая проблема, и простая проверка того, доступен ли файл для записи, ненадежна - что произойдет, если во время передачи файла произойдет сбой в сети? У вас все еще будет неполный файл.

Самый надежный способ справиться с этим - попросить отправителя отправить файл с временным суффиксом и переименовать его после завершения передачи. Другой распространенный метод - отправить второй файл foo.done, указывающий, что foo.xxx завершен, и использовать для этого настраиваемый фильтр.

person Gary Russell    schedule 19.05.2014