多个弹簧批处理作业

时间:2015-05-19 17:50:49

标签: spring spring-boot spring-batch

我在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"开始工作之前完成。

有没有办法可以并行运行这些工作?

谢谢!

1 个答案:

答案 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}}
相关问题