Java中jobExecution.getStatus()何时返回BatchStatus.STOPPED值?
什么情况下jobExecution.getStatus() == BatchStatus.STOPPED判断为true
BatchStatus.STOPPED是Spring Batch定义的任务优雅主动终止的状态,区别于异常失败的FAILED状态,触发该状态的常见场景如下:
- 通过Spring Batch 运维接口主动停止任务:比如调用
JobOperator.stop(jobExecutionId)方法手动终止正在运行的任务,Spring Batch会等待当前正在执行的可停止操作完成后,将任务状态标记为STOPPED - Step 流转配置触发停止:你在Job的Step流转规则中配置了停止条件,例如如下配置:
当上游Step执行结果符合匹配条件时,整个Job会直接停止,状态标记为.on("CUSTOM_EXIT_CODE").stop()STOPPED - 自定义停止逻辑触发:比如你在ItemReader/ItemProcessor/ItemWriter中实现了自定义中断逻辑,符合条件时主动将当前Step/Job的状态设置为
STOPPED,任务执行完当前操作后就会进入停止状态
STOPPED状态本身属于正常可控的终止,不是异常场景,后续重启任务时可以从上次停止的位置继续执行,你现有代码中对该状态仅打印info日志的处理是符合语义的。
内容的提问来源于stack exchange,提问作者Francis Raj
相关产品推荐
相关产品推荐

