如何在Spring Batch中等待完成不可重新启动的作业

我已经将一些夜间安排的工作转换成一个接一个地完成工作 . 这在Spring Batch中是完全合法的,因为可以通过引用另一个作业来定义Step .

问题是一些相同的子作业是由Quartz按计划运行的,并且它们是不可重新启动的 . 这意味着有时候“作业的工作”失败了,因为它试图启动已经运行的作业 . 这让人深受喜爱:

JobRestartException: JobInstance already exists and is not restartable

我的问题是,这是否是一种告诉Spring Batch在引用的作业可用然后运行它之前会哭的方法 . 这是因为夜间工作流程需要A-> B-> C.我知道我可以编写自己的自定义作业启动器来轮询JobRepository,以便完成违规子作业的ExecutionStatus,但我希望SB已经考虑过这个常见问题 .

Update ,那些询问工作原理的人的工作职业的例子 . ref 指向SimpleJob bean的作业 . 这很有效,但是当子作业已经运行时,如上所述的错误 .

<!-- Example Job of Jobs -->
<job id="jobOfJobs">
  <step id="step1">
    <job ref="job1" />
  </step>
  <step id="step2">
    <job ref="job2" />
  </step>
</job>

回答(1)

2 years ago

如果您需要管理作业之间的依赖关系,请将它们视为使用JobStep的步骤