目前 Spring Batch 框架不支持官方方法来暂停步骤。
这对我来说是一个挑战,我希望深入了解如何配置这样的逻辑?
我有一个外部服务来决定当前作业是否应该停止特定步骤。我的系统中有很多原因需要对正在运行的作业的各个步骤进行如此细粒度的控制。
我对如何配置步骤暂停的最初想法是执行以下两件事之一:
当前 Flow 类抽象 Spring Batch 提供的还不够好,因为这对于工作来说是静态的,在我的例子中,我有另一个服务来决定这一点,因此 Flow 是不够的。
最终目标是使用的 JobRepository spring 批处理具有正确的状态设置以及未运行的实际步骤,我发现这是此类功能的棘手部分。完全重新开始我的步骤是另一种可能性,但我宁愿避免这种情况,因为这会导致工作浪费,除非我在最后一次读写计数之后重新开始步骤,而我也没有完全理解这一点。
谢谢你。
我有一个外部服务来决定当前作业是否应该停止特定步骤。
您可以使用
FlowBuilder#stopAndRestart(JobExecutionDecider decider)
在特定步骤停止流程并稍后重新启动作业。自定义决策可以在JobExecutionDecider
中实施。
您还可以使用
FlowBuilder#stopAndRestart(Step restart)
在特定步骤停止作业并开始另一个步骤。