当我们使用不同参数运行多个并发作业时,我们如何控制(停止,重新启动)相应的作业?我们的内部代码提供jobExecution对象,但是在窗口下jobOperator使用作业名来获取作业实例。
在我们的案例中,所有工作都来自" do-stuff.xml" (好吧,它已经消毒了,而且不是很原始的)。在查看了spring-batch源代码后,我们担心的是,如果有多个作业正在运行,我们停止工作,它将采用最近提交的作业并停止它。
答案 0 :(得分:1)
JobOperator
将允许您使用getRunningExecutions(String jobName)
获取作业的所有正在运行的执行。您应该能够遍历该列表以找到所需的列表。然后,只需拨打您想要的stop(long executionId)
。
或者,我们还实现了侦听器(在步骤和块级别)来检查中断状态表。当我们想要实现系统范围的中断时,我们在那里添加中断并让我们的监听器抛出异常来减少我们的工作。一旦中断解除,所有"失败"执行可能会重新启动。