Могу ли я связать два пакетных задания Spring вместе?

Мы используем Spring Batch 3.0.8 с Spring Framework 4. Мы определили ряд заданий, которые будут выполняться в быстрой последовательности: Job1 загружает справочные данные из удаленных источников и Job2 обрабатывает входной файл CSV относительно справочных данных, загруженных в Job1.

Обычно мы запускаем Job1 и Job2 отдельно под контролем операционной группы, но для автоматического тестирования мы хотели бы связать Job1 и Job2 вместе, чтобы, как только Job1 завершит обработку, оно автоматически запустит Job2.

Как мы можем сделать это?

0
0
572
2

Ответы 2

Самый простой способ добиться этого - использовать Spring Batch Job. Вы можете использовать шаг задания для запуска одного задания. Как только это закончится, вы можете использовать другой для запуска второго. Могут работать и другие механизмы, такие как использование слушателей, но в описываемом вами случае использования, я думаю, это имеет наибольший смысл.

«Как только это закончится, вы можете использовать другое для запуска второго.» - как мне запустить вторую работу?

JamesD 02.05.2018 19:13

Я должен добавить, что сегодня мы используем CommandLineJobLauncher, чтобы запускать все наши задания индивидуально (из строки cmd), когда пришло время запускать.

JamesD 02.05.2018 19:17

Если вы можете добавить новое задание, вы также можете взглянуть на JobStep.
Из этого Javadoc:

A Step that delegates to a Job to do its work. This is a great tool for managing dependencies between jobs, and also to modularise complex step logic into something that is testable in isolation. The job is executed with parameters that can be extracted from the step execution, hence this step can also be usefully used as the worker in a parallel or partitioned execution.

Другие вопросы по теме