我在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”的作业。
有没有办法可以并行运行这些作业?
谢谢!
您可以JobLauncher在一些配置文件中定义您的文件,并将其设置SimpleAsyncTaskExecutor为任务执行程序,它将异步运行作业(无需等待一个作业完成才能启动下一个作业)。
JobLauncher
SimpleAsyncTaskExecutor
这是来自的代码片段:
@Bean public JobLauncher jobLauncher() { final SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor(); jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor); return jobLauncher; }