2017-01-15 8 views
0

Я использую весеннюю интеграцию для загрузки набора файлов PDF и XML с сервера SFTP. Процесс запускается опроллером на основе cron. Мне нужно убедиться, что все файлы XML загружаются полностью перед файлами PDF из одного и того же удаленного каталога. Я не хочу использовать два разных задания cron для их запуска. Как я могу это решить? Заранее спасибо. (ПРИМЕЧАНИЕ: я новичок в интеграции)Порядок загрузки файлов FTP с интеграцией Spring

ответ

0

Используйте атрибут FileListFilter в атрибуте filter (используйте FTPFile для FTP и LsEntry для SFTP в качестве параметризованного родового типа).

В методе filterFiles соберите список файлов кандидатов в том порядке, в котором вы хотите их загрузить.

+0

Большое спасибо @garry, ваше решение работало, чтобы отсортировать файлы перед импортом из SFTP. Но после импорта я запускаю весенние пакетные задания для каждого из файлов. Поскольку пакетные задания выполняются пулом исполнителей параллельно, порядок не поддерживается. Когда я уменьшаю количество исполнителей до 1, порядок сохраняется. – Jino

+0

Я не уверен, что вы имеете в виду; если вы не опубликуете PDF до тех пор, пока соответствующий XML не будет полностью получен, какая разница делает порядок обработки? –

+0

Спасибо за быстрый ответ. Я проверил свой код и, похоже, отсортированный порядок не поддерживается после перехода к каналу из SFTP. Я вставлял основные части кода в описание. Не могли бы вы указать, что здесь не так? – Jino

0

Я бы предложил подсчитать количество файлов в каталоге, а затем использовать это в цикле. Для проверки количества файлов в системе UNIX, вы можете использовать следующую команду:

ls -1fa | wc -l 

После загрузки всех XMLs, вы можете вызвать другой метод, который начнет загрузку PDF-файлов.

Смежные вопросы