У меня есть папка на моем сервере Mule ESB, на которую могут указывать несколько источников (один SCP, один SFTP, а также другие). Всякий раз, когда я обнаруживаю файл, я хочу переместить его в другой каталог. Проблема в том, что я перемещаю частично заполненные файлы, заставляя меня потерять данные.Mule ESB: Как я могу обнаружить частичные файлы, чтобы избежать передачи частично загруженных файлов?
Я попытался использовать атрибут «fileage» файла, но он не работает надежно. Я стараюсь поддерживать латентность как можно больше, так как большинство файлов будут < 10kb, но некоторые из них должны быть размером до 100 МБ.
Есть ли способ узнать, является ли файл частичным, а не полным? Я знаю, что WinSCP использует расширение .filepart, но это только для одного приложения, и даже тогда это расширение может быть изменено (или полностью удалено) в настройках WinSCP.
Какую проблему надежности вы получили с fileAge? Возможно, стоит открыть JIRA @ MuleSoft, если это ошибка? Это говорит о том, что наилучшим вариантом для поддержания низкой задержки и высокой надежности будет обеспечение использования управляющего файла (например .filepart) и создание определенного фильтра, который его ищет. –
На самом деле, с чуть большим тестированием выясняется, что проблема находится на уровне ОС. В RedHat метка «Last Modified» обновляется только каждые ~ 1000 мс, создавая слишком большую задержку для файлов 4kb. В Windows это еще хуже: «последний измененный» устанавливается только после начала передачи, а затем сбрасывается, когда он завершается. Команда MuleSoft технически корректна, чтобы вытащить fileAge с этой отметки времени, но ОС не обновляет ее достаточно часто, чтобы работать. Вместо этого они должны использовать файл ** size **. Я отправлю билет на работу. – Bing
Это замечательные результаты. –