我在Spring Boot中使用@Scheduled注释来触发多个作业。
以下是代码段:
@EnableBatchProcessing
@EnableScheduling
public class Config extends DefaultBatchConfigurer{
@Autowired
JobLauncher launcher;
@Scheduled
public void run(){
String[] argList = {"A", "B"};
for(String char : argList){
launcher.run(job(),
new JobParametersBuilder().
addString("char", char).
toJobParameters());
}
}
public Job job(){
//Job definition is here.
}
}
但是,这会连续触发2个作业而不是并行触发,即应用程序等待带有参数" A"用paramerter" B"开始工作之前完成。
有没有办法可以并行运行这些工作?
谢谢!
答案 0 :(得分:2)
您可以在某个配置文件中定义SimpleAsyncTaskExecutor
,并将@Bean
public JobLauncher jobLauncher() {
final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(jobRepository);
final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor);
return jobLauncher;
}
设置为任务执行器,它将运行异步作业(不等待一个完成以启动下一个)。
以下是来自的代码段:
{{1}}