我正在使用Spring中的@调度注释来触发多个作业。
下面是代码片段:
@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.
}
}但是,这将触发连续的两个作业,而不是并行的,即应用程序在开始使用参数为"B“的作业之前等待参数"A”的作业完成。
有办法并行运行这些作业吗?
谢谢!
发布于 2015-05-21 06:24:42
您可以在某个配置文件中定义您的JobLauncher,并将SimpleAsyncTaskExecutor设置为任务执行器,它将运行作业异步(而不是等待一个完成才能启动下一个作业)。
以下是来自以下内容的代码片段:
@Bean
public JobLauncher jobLauncher() {
final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(jobRepository);
final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor);
return jobLauncher;
}https://stackoverflow.com/questions/30332722
复制相似问题