多个春季批作业 [英] Multiple spring batch jobs

查看:89
本文介绍了多个春季批作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Spring Boot中使用@Scheduled批注来触发多个作业.

I am using the @Scheduled annotation in Spring Boot to trigger multiple jobs.

以下是代码段:

    @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"的作业.

However, this triggers the 2 jobs in succession and not in parallel, i.e. the application waits for job with parameter "A" to complete before starting job with paramater "B".

是否可以并行运行这些作业?

Is there a way I can run these jobs in parallel?

谢谢!

推荐答案

您可以在某些配置文件中定义JobLauncher并将SimpleAsyncTaskExecutor设置为任务执行器,它将异步运行作业(无需等待顺序完成)开始下一个).

You can define your JobLauncher in some config file and set SimpleAsyncTaskExecutor as task executor which will run jobs async (not waiting for one to complete in order to start next one).

这是来自的代码段:

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

这篇关于多个春季批作业的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆