Spring批处理jobOperator - 如何控制来自同一XML文件的作业的多个并发实例?

时间:2016-05-09 15:29:50

标签: spring-batch

当我们使用不同参数运行多个并发作业时,我们如何控制(停止,重新启动)相应的作业?我们的内部代码提供jobExecution对象,但是在窗口下jobOperator使用作业名来获取作业实例。

在我们的案例中,所有工作都来自" do-stuff.xml" (好吧,它已经消毒了,而且不是很原始的)。在查看了spring-batch源代码后,我们担心的是,如果有多个作业正在运行,我们停止工作,它将采用最近提交的作业并停止它。

1 个答案:

答案 0 :(得分:1)

JobOperator将允许您使用getRunningExecutions(String jobName)获取作业的所有正在运行的执行。您应该能够遍历该列表以找到所需的列表。然后,只需拨打您想要的stop(long executionId)

或者,我们还实现了侦听器(在步骤和块级别)来检查中断状态表。当我们想要实现系统范围的中断时,我们在那里添加中断并让我们的监听器抛出异常来减少我们的工作。一旦中断解除,所有"失败"执行可能会重新启动。