#spring-batch #spring-integration
Вопрос:
У меня есть следующая проблема для реализации в качестве пакетного приложения spring.
- Запрашивать данные у внешней конечной точки
- Применить бизнес-логику (сопоставление)
- Запись в csv-файл
- Загрузите эти файлы на sftp-сервер
Я ожидал значительного объема прочитанных данных. Невозможно сохранить все это в памяти. Мой вопрос в том, могу ли и как я могу объединить шаги 3 и 4 в один. И самое главное, как можно оптимизировать передачу данных непосредственно на sftp-сервер.
Ответ №1:
Адаптер исходящего канала SFTP поддерживает полезную нагрузку в качестве InputStream
. Итак, вы можете передавать данные по этому потоку: https://docs.spring.io/spring-integration/docs/current/reference/html/sftp.html#sftp-outbound.
Вы можете использовать RemoteFileTemplate
или SftpSession
напрямую, хотя и в весенней партии ItemWriter
.
Комментарии:
1. Да, я сделал это, и это отлично работает. Но теперь я хотел бы переместить файл из временной папки на sftp в каталог назначения после завершения процесса загрузки. Но, как я выяснил, RemoteFileTemplate не хватает такой функциональности. Вероятно, я должен использовать IntegrationFlow ? Есть ли простой способ сделать это ?
2. Это почему? Есть
rename(String fromPath, String toPath)
контракт. Не может ли он на самом деле переименовать ваш удаленный каталог tmp в реальный?3. Я попробую это сделать. Спасибо. Возможно, имя сбило меня с толку :/