Spling Batch で複数Job定義したときの実行job指定方法
ソースは公式のサンプルを使用
Job定義
BatchConfiguration.java
@Bean
Job firstJob(JobRepository jobRepository,
JobCompletionNotificationListener listener, Step step1) {
return new JobBuilder("firstJob", jobRepository)
.incrementer(new RunIdIncrementer())
.listener(listener)
.flow(step1)
.end()
.build();
}
@Bean
Job secondJob(JobRepository jobRepository,
JobCompletionNotificationListener listener, Step step1) {
return new JobBuilder("secondJob", jobRepository)
.incrementer(new RunIdIncrementer())
.listener(listener)
.flow(step1)
.end()
.build();
}
このまま実行するとエラーになる
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobLauncherApplicationRunner': Invocation of init method failed
・・・
Caused by: java.lang.IllegalArgumentException: Job name must be specified in case of multiple jobs
Job指定
下記の"18.12.2. Running Spring Batch Jobs on Startup"に記載のとおり、実行するJobは、"spring.batch.job.name"に指定する。
application.properties
spring.batch.job.name=firstJob
※application.propertiesはcomplete/src/main/resourcesに配置
引数にJob指定
起動時の引数にも設定可
--spring.batch.job.name="secondJob"
複数Job実行指定
今は1回の実行でひとつのJobになってるみたい...
application.properties
spring.batch.job.name=firstJob, secondJob
※実行時の順番はプロパティファイルに記載した通りになるわけではないらしいので注意、Spring Batch では制御できないらしい