Источник файла начального приложения Spring Cloud Stream для Spring Batch Cloud Task

У меня есть приложение для весенней пакетной загрузки, которое принимает в качестве входных данных плоский файл. Я преобразовал приложение в облачную задачу и развернул весной локальный сервер потока данных. Затем я создал поток, начиная с File Source -> tasklaunchrequest-transform -> task-launcher-local, который запускает мое приложение пакетной облачной задачи.

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

Я проверил документы по адресу https://github.com/spring-cloud-stream-app-starters/tasklaunchrequest-transform/tree/master/spring-cloud-starter-stream-processor-tasklaunchrequest-transform

Это говорит

Любой тип ввода. (полезная нагрузка и заголовок отбрасываются)

Мой вопрос в том, как передать файл как полезную нагрузку из источника файла в пакетное приложение, которое кажется очень простой функцией.

любая помощь очень ценится.




Ответы (1)


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

person Michael Minella    schedule 01.03.2018
comment
Спасибо, Майкл, я бы хотел, чтобы весенняя команда добавила возможность отправлять полезные данные. А пока создам свой трансформатор. - person shiva; 02.03.2018
comment
после долгого расследования выяснилось, что tasklaunchrequest поддерживает только String. поскольку мое пакетное приложение обернуто как облачная задача, и нет возможности отправить файл в качестве параметра при запуске пакетной обработки .. есть ли способ скопировать файл в облачное литейное производство и передать местоположение файла пакетному приложению, которое также развернуто в ср - person shiva; 02.03.2018
comment
у меня пример использования, когда я пытаюсь создать весенний облачный поток следующим образом - File / Ftp / Sftp / Http Source - ›Пакетное приложение [завернутое как Cloud Task] - person shiva; 02.03.2018
comment
При запуске на CF вы действительно хотите, чтобы пакетное задание загружало файл (чтобы он был там при перезапуске, если это необходимо). Итак, в вашем случае вы хотите, чтобы источник потока отправлял туда, где находится файл, в пакетное задание, а затем пакетное задание выполняло фактическую загрузку. У меня есть пример загрузки из сегментов S3 в моем пакетном задании S3JDBC, который можно найти здесь: github.com/mminella/S3JDBC - person Michael Minella; 02.03.2018
comment
Спасибо, Майкл, я попробую. - person shiva; 03.03.2018
comment
Привет, Майкл, теперь я пробую то же самое с весенней интеграцией вместо облачного потока. Я создал поток интеграции с входящим адаптером потока sftp. Поток сохранит содержимое файла в таблицу. Я запускаю этот адаптер с шага 1 пакетного задания. Шаг 2 прочитает содержимое файла из таблицы и обработает его. Проблема, которая у меня есть, заключается в том, как приостановить шаг 1 до завершения процесса интеграции. Все приложение представляет собой весеннюю загрузку с весенней партией и пружинной интеграцией. Причина, по которой задание не запускается из потока интеграции, заключается в возможности перезапуска задания. Благодарю. - person shiva; 15.03.2018