工作职位-将工作作为子职位以及独立运行

时间:2020-09-20 10:39:34

标签: spring-batch

我有一个低于2个工作步骤的ParentJob:

  1. JobStep1
    • 工作1-Step11-> Step12
  2. JobStep2
    • 作业2-Step21-> Step22

所有步骤我都只有一个工作。但是在某些情况下,我将不得不分别运行Step11和Step12以及Step21和Step22。这就是我将它们包含在Job1和Job2中,然后从ParentJob调用Job1和Job2的原因。 所有这些作业(ParentJob,Job1和Job2)都具有与之关联的RunIdIncrementer。当ParentJob运行时,所有作业都以相同的run.id参数运行(子作业的RunIdIncrementer,即Job1和Job2在这种情况下不起作用,这很明显)。

我面临的问题是,例如第一次运行时,所有作业的运行id为1。然后,如果Job2独立运行,它将以run.id 2运行。现在,当ParentJob再次运行时,它以run.id 2运行,而Job1运行良好,但Job2提供JobInstanceAlreadyCompleteException。我了解Job1和Job2的RunIdIncrementer无法正常工作。但是,有什么方法可以实现我想做的事吗?

我想到的解决方案是让我的自定义JobParametersIncrementer每次运行都生成唯一的run.id。可能将run.id作为当前时间(以毫秒为单位)。我仍然更喜欢RunIdIncrementer,因为它生成的run.id看起来更干净。

如果需要的话,也将感谢您对设计变更的任何建议。

0 个答案:

没有答案
相关问题