小编典典

多个Spring批作业

spring-boot

我在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.
       }
    }

但是,这将连续而不是并行触发两个作业,即,应用程序等待参数“ A”的作业完成,然后再启动参数“ B”的作业。

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

谢谢!


阅读 369

收藏
2020-05-30

共1个答案

小编典典

您可以JobLauncher在一些配置文件中定义您的文件,并将其设置SimpleAsyncTaskExecutor为任务执行程序,它将异步运行作业(无需等待一个作业完成才能启动下一个作业)。

这是来自的代码片段:

@Bean
public JobLauncher jobLauncher() {
    final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
    jobLauncher.setJobRepository(jobRepository);
    final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
    jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor);
    return jobLauncher;
 }
2020-05-30