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

Spring batch jobOperator - how are multiple concurrent instances of a job from the same XML file controlled?

当我们运行多个参数不同的并发作业时,我们如何控制(停止、重启)合适的作业?我们的内部代码提供了 jobExecution 对象,但是在后台 jobOperator 使用作业名称来获取作业实例。

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

JobOperator 将允许您使用 getRunningExecutions(String jobName) 获取作业的所有 运行 次执行。您应该能够遍历该列表以找到您想要的那个。然后,给你想要的那一个打电话stop(long executionId)

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