Я использую весеннюю интеграцию для загрузки набора файлов PDF и XML с сервера SFTP. Процесс запускается опроллером на основе cron. Мне нужно убедиться, что все файлы XML загружаются полностью перед файлами PDF из одного и того же удаленного каталога. Я не хочу использовать два разных задания cron для их запуска. Как я могу это решить? Заранее спасибо. (ПРИМЕЧАНИЕ: я новичок в интеграции)Порядок загрузки файлов FTP с интеграцией Spring
0
A
ответ
0
Используйте атрибут FileListFilter
в атрибуте filter
(используйте FTPFile
для FTP и LsEntry
для SFTP в качестве параметризованного родового типа).
В методе filterFiles
соберите список файлов кандидатов в том порядке, в котором вы хотите их загрузить.
0
Я бы предложил подсчитать количество файлов в каталоге, а затем использовать это в цикле. Для проверки количества файлов в системе UNIX, вы можете использовать следующую команду:
ls -1fa | wc -l
После загрузки всех XMLs, вы можете вызвать другой метод, который начнет загрузку PDF-файлов.
Большое спасибо @garry, ваше решение работало, чтобы отсортировать файлы перед импортом из SFTP. Но после импорта я запускаю весенние пакетные задания для каждого из файлов. Поскольку пакетные задания выполняются пулом исполнителей параллельно, порядок не поддерживается. Когда я уменьшаю количество исполнителей до 1, порядок сохраняется. – Jino
Я не уверен, что вы имеете в виду; если вы не опубликуете PDF до тех пор, пока соответствующий XML не будет полностью получен, какая разница делает порядок обработки? –
Спасибо за быстрый ответ. Я проверил свой код и, похоже, отсортированный порядок не поддерживается после перехода к каналу из SFTP. Я вставлял основные части кода в описание. Не могли бы вы указать, что здесь не так? – Jino