Spring Batch Partitioning,如果任何分区步骤抛出异常,如何停止作业
我正在使用分区步骤运行Spring批处理作业,如果1分区失败或抛出异常我需要立即停止作业,如果任何分区步骤抛出异常,如何停止作业,因为当前其他分区步骤一直运行直到结束,完成后,作业将以不成功的返回码停止 .
Code :: stepBuilderFactory.get(“masterStep”) . allowStartIfComplete(true).partitioner(multithreadedPartitionerStep).partitioner(“multithreadedPartitionerStep”,extractJobPartitioner).gridSize(gridSize).taskExecutor(taskExecutor).build();
2 years ago
如果我理解正确,您希望Spring Batch Job根据您的步骤输出获得某种行为 .
正如上面提到的@Jim,向我们展示你的分区处理程序 .
第一件事 - 工作是一份工作 . 它由步骤组成(可以是分区的) . 如果任何一个步骤的状态变得陈旧,它也将反映在Job上(通用术语)
到目前为止,你可能已经转移到了更新版本的Spring Batch . 幸运的是,在4.x世界中,除常规流量外,您还有三种选择 .
结束一步
失败了一步
在给定步骤停止工作
参考链接 - Spring Guides
并告诉Spring Batch在什么步骤时该怎么做 . 以下是上述链接的快速浏览:
在以下方案中,如果step2失败,则作业将以BatchStatus为FAILED / COMPLETE / WHATEVER并且ExitStatus为EARLY TERMINATION而停止,并且step3不会执行 . 否则,执行转到步骤3 . 此外,如果step2失败并重新启动作业,则在步骤2再次开始执行 .
和
在以下情形中,如果step1以COMPLETE / FAILED / WHATEVER结束,则作业将停止 . 重新启动后,将在第2步开始执行 .
在this分区步骤中,如果在任何csv中找到任何不正确数量的字段,则会正确报告 . 这里asynctaskexecutor和threadpooltaskexecutor用于分区步骤 .
希望它有所帮助,以某种方式适合您的情况 .