Как определить, завершена ли загрузка файла через настраиваемый SFTP-коннектор в Mule? - PullRequest
0 голосов
/ 10 января 2019

Я использую пользовательский SFTP-коннектор в Mule (написанный на Groovy) для загрузки файлов в локальную папку два раза в день. Я установил тайм-аут SFTP на 30 секунд, частоту опроса входящего соединителя файлов на 0,5 секунды и срок хранения файлов на 1 секунду.

Один раз в несколько дней процесс завершится неудачей на этапе переплетения / преобразования данных. В журнале указывается, что обязательное поле пустое, однако, когда я проверяю файл вручную, значение там есть. Кроме того, случайным образом происходит сбой любого поля в файле, как если бы файл был неполным, а это не так - когда я сравниваю загруженный файл с удаленным сервером, они идентичны. Если я вручную запускаю процесс на локальном компьютере, он всегда успешно завершается, что затрудняет репликацию этой проблемы.

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

Есть ли способ определить, завершена ли загрузка файла с SFTP-сервера, прежде чем процессор начнет анализировать файл?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Ждать каждые 5 секунд и проверять размер файла. Если fileSizes (предыдущий и текущий) равны, продолжайте. Если нет, вы знаете, что он все еще загружается, и вам нужно подождать еще 5 секунд.

0 голосов
/ 10 января 2019

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

...