多个 spring 批处理作业

Multiple spring batch jobs

我在 Spring 引导中使用 @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" 的作业完成,然后再开始参数 "B" 的作业。

有什么方法可以让我运行并行执行这些作业?

谢谢!

您可以在一些配置文件中定义您的 JobLauncher 并将 SimpleAsyncTaskExecutor 设置为任务执行器,它将 运行 作业异步(不等待一个完成以启动下一个).

这是来自 :

的代码片段
@Bean
public JobLauncher jobLauncher() {
    final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
    jobLauncher.setJobRepository(jobRepository);
    final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
    jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor);
    return jobLauncher;
 }