Background

我目前有一个弹出批处理作业,读取一个平面文件 . 该作业使用 MultiResourcePartitioner 来读取已分割为N个较小文件的文件的物理分区 . 这意味着文件的每个物理分区都将导致执行一个新的从属步骤来读取分区 .

The problem

如果读取任何物理分区时出现任何问题,则该从属步骤的执行将失败,并且弹出批处理将记录该异常 . 这不会影响正在读取文件的不同物理分区的其余从属步骤的执行;但是,这不是理想的行为 . 我想要的是,如果在读取特定物理分区时出现问题(例如:无法解析特定列),则应将异常传播到启动 Job 的位置,以便我可以停止任何进一步处理 .

AbstractStepexecute方法的当前实现捕获 Throwable 并通过记录它来抑制异常 . 因此,异常不会传播到 Job 启动的位置,并且无法停止执行剩余的从属步骤 .

如何使spring-batch将从属步骤中发生的任何异常一直传播到 Job 的启动位置?我想这样做,以便在处理任何分区文件时出现问题,我可以暂停任何进一步的处理 .