
우선 SpringBatch에서는 외부에서 Job을 실행시키지 않는 이상 MultiJob을 구현할 수 없다.
참고) https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#multiple-batch-jobs
따라서, Configuration에서 MultiJob을 정의해놓고 application.yml에서 아래와 같이 설정을 통해서 Job이 자동 실행되지 않도록 설정해야한다.
spring:
batch:
job:
enabled: false
만약, MultiJob을 설정해놓은 상태에서 Job이 자동 수행되도록 설정해놓으면 SpringBatch는 Job이 여러개 정의되어 있다고 에러를 발생시킨다.
그렇다면.. MultiJob을 정의해놓고 외부에서 JobLauncher를 이용해서 실행시켜야한다.
이때 필요한게 스케쥴러이다.
우선 스프링배치는 스케쥴링 기능을 지원하지 않으며, Spring Scheduler 또는 Quartz 오픈소스를 사용해서 구현해야한다.
참고에서 언급된 github 주소를 가보면 아래와 같이 문구가 보인다.

이것때문에 실제로 SpringBatch에서는 MultiJob을 수행하려면 여러개의 프로세스를 띄워야한건가? 해서 직접 실행해보았다.
================
>> hello1Step
================
================
>> hello2Step
================
Hello1Step Ing..0
Hello2Step Ing..0
Hello1Step Ing..1
Hello2Step Ing..1
Hello1Step Ing..2
Hello2Step Ing..2
Hello1Step Ing..3
Hello2Step Ing..3
Hello1Step Ing..4
Hello2Step Ing..4
결과적으로 보면 2개의 Job이 Quartz 스케쥴러에 의해서 동시에 실행되고 있는 모습을 볼 수 있다.
github : multiJob 소스