我有一个要求,我在弹簧批处理作业中有多个步骤,如果一步失败,我仍然应该继续下一步。但失败的步骤应该是可重启的。
<batch:job id="myJob" restartable="true">
<batch:step id="step1" allow-start-if-complete="false">
<batch:tasklet ref="tasklet1" start-limit="1">
</batch:tasklet>
<batch:next on="*" to="step2"/>
</batch:step>
<batch:step id="step2">
<batch:tasklet ref="tasklet2" allow-start-if-complete="true">
</batch:tasklet>
<batch:next on="*" to="step3"/>
</batch:step>
<batch:step id="step3">
<batch:tasklet ref="tasklet3" allow-start-if-complete="true">
</batch:tasklet>
<batch:next on="*" to="step4"/>
</batch:step>
<batch:step id="step4">
<batch:tasklet ref="tasklet4" allow-start-if-complete="true">
</batch:tasklet>
</batch:step>
<batch:listeners>
<batch:listener ref="myListener" />
</batch:listeners>
</batch:job>
我已将Tasklet3的异常添加到测试目的。
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
logger.info("Tasklet4 is running");
throw new Exception("Some error");
}
我对此有很多疑问。
我的目标是步骤应该继续下一步失败,我应该能够重新启动作业(作业应该失败),并且在重新启动执行期间不应该执行上面的一些步骤(步骤1)。
请帮忙。