我有两份工作(Job1,Job2) Job2取决于job1的结果,因此必须等到作业1完成
我需要以某种方式链接它们:
当job1完成时,需要调用job2。怎么做?最后使用tasklet调用job2?
另一种方式可能是,一旦job1返回,调用者(这是一些调度程序服务)将负责调用job2 - 不是很好,因为需要同步调用job1。
< / LI> 醇>如何使用spring batch实现两个链式(和依赖的作业)?
谢谢。
答案 0 :(得分:3)
您可以使用JobStep从第一份作业中启动第二份作业。见5.3.6 Externalizing Flow Definitions and Dependencies Between Jobs
答案 1 :(得分:0)
这是我一个接一个地启动两个(列表)作业的方式:
1-使用@Order声明两个Job Bean
@Order(1) // The first in the List
@Bean(name = "firstJob")
public Job firstJob() { .... }
@Order(2) // Second job to be launched
@Bean(name = "secondJob")
public Job secondJob() { .... }
2-插入作业列表
@Autowired
List<Job> jobs;
3-启动它们
public void run(String... args) {
JobParameters params = new JobParametersBuilder()
.addString("JobID", String.valueOf(System.currentTimeMillis()))
.toJobParameters();
jobs.forEach(job -> {
try {
jobLauncher.run(job, params);
} catch (Exception e) {
logger.error("Job {} cannot be executed", job.getName());
e.printStackTrace();
}
});
}
我希望这可以帮助新人阅读这篇文章