Spring Batch流程控制异常:步骤均完成但Job状态为失败
Spring Batch Job流程配置问题修复方案
你的Job配置逻辑存在两处关键问题:
- 重复定义了
fileCollectTasklet执行失败的分支,完全没有处理COMPLETED状态的流程 - 第一个失败分支里的
.on("*").fail()会强制Job失败,后续重复的分支逻辑被覆盖,导致所有场景最终都会触发失败逻辑
修正后的配置代码
public Job test_job() { return jobBuilderFactory.get("test_job") .incrementer(new RunIdIncrementer()) .preventRestart() .start(fileCollectTasklet()) // 处理fileCollectTasklet执行成功的情况 .on("COMPLETED") .to(writerTasklet()) .on("*") // 不管writerTasklet执行结果如何 .end() // 最终标记Job为成功状态 .from(fileCollectTasklet()) // 处理fileCollectTasklet执行失败的情况 .on("FAILED") .to(writerTasklet()) .on("*") // 不管writerTasklet执行结果如何 .fail() // 最终标记Job为失败状态 .end(); }
逻辑说明
- 当
fileCollectTasklet返回COMPLETED状态时,执行writerTasklet,无论其执行结果是成功还是失败,Job最终都会被标记为成功 - 当
fileCollectTasklet返回FAILED状态时,执行writerTasklet,无论其执行结果如何,Job最终都会被标记为失败
内容的提问来源于stack exchange,提问作者주행가 종시기
相关产品推荐
相关产品推荐

