Apache Camel ftp: как запретить компоненту ftp обрабатывать файл при записи этого файла

в моем приложении для верблюдов это файл процесса с ftp-сервера. Когда я тестирую, я обнаружил во время загрузки файла, тем временем мой маршрут начинает забирать этот файл и выполнять процесс. Я установил для readLock значение «изменено», а задержку «60000», мой файл составляет около 500 м. Я ничего не упускаю?


person user6807013    schedule 10.02.2020    source источник
comment
Остерегайтесь, что измененная блокировка чтения для FTP-серверов часто имеет только чч: мм для времени (не секунд), поэтому часто не может обнаружить изменение так быстро. Для FTP-передачи всегда лучше, если файл записывается с использованием временного имени, а затем переименовывается по завершении или использует дополнительные файлы-маркеры (файлы готовности), чтобы сигнализировать о готовности к загрузке.   -  person Claus Ibsen    schedule 11.02.2020
comment
из документа верблюда я нашел markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component, означает ли это, что файлы маркеров не могут использоваться в моей ситуации - компонент ftp.   -  person user6807013    schedule 12.02.2020
comment
как добиться if the file is written using a temporary name and then renamed when done?   -  person user6807013    schedule 12.02.2020
comment
Это другая система, которая загружает/записывает эти файлы. Вы говорите о загрузке файлов. Вы используете Camel как для загрузки, так и для скачивания? И если это так, то прочитайте документы, поскольку они задокументированы там о временных файлах.   -  person Claus Ibsen    schedule 13.02.2020
comment
Да, есть другая система для загрузки файлов. Я использую верблюд только для загрузки файлов. Поэтому я думаю, что установка readLockCheckInterval на 1 минут может помочь мне с моей проблемой.   -  person user6807013    schedule 17.02.2020


Ответы (1)


Обратите внимание, что параметр delay — это всего лишь фиксированный интервал, который не «связан» с readLock.

Параметр readLock changed каждую секунду проверяет, изменился ли размер файла. При медленной загрузке это может быть причиной того, что файлы, которые все еще загружаются, уже используются.

Вы можете попробовать увеличить readLockCheckInterval выше 1 секунды.

См. Документы Camel FTP для получения дополнительной информации и параметров (вариант readLock)

person burki    schedule 11.02.2020
comment
This interval is used for sleeping between attempts to acquire the read lock. поэтому при каждой проверке механизм проверки вроде не должен меняться. - person user6807013; 12.02.2020
comment
Да, если, например, комментарий Клауса с чч: мм относится к вашему случаю, вам нужно установить readLockCheckInterval как минимум на 1 минуту, чтобы распознать файл, который все еще загружен. Затем Camel будет каждую минуту проверять, изменился ли размер файла, и продолжать делать это до тех пор, пока размер файла не изменится между двумя проверками. Это, очевидно, приводит к заметной задержке использования файла. - person burki; 13.02.2020