Spring Batch - 当 ItemReader 没有返回数据时如何使作业失败

2024-01-22

我有一个 Spring Batch 应用程序,它使用 JdbcCursorItemReader 从数据库表中读取数据,并使用 FlatFileItemWriter 将其写入平面文件。

当我测试我的应用程序时,我发现即使没有通过 JdbcCursorItemReader 从数据库返回数据,FlatFileItemWriter 也会创建一个文件。但是,当数据库中没有适当的数据时,我打算让我的工作失败。是否可以这样做或至少阻止 FlatFileItemWriter 创建文件?

Regards


from http://static.springsource.org/spring-batch/reference/html/patterns.html http://static.springsource.org/spring-batch/reference/html/patterns.html

11.7。未找到输入时处理步骤完成

在许多批处理场景中,在数据库或文件中找不到要处理的行并不例外。该步骤被简单地视为未找到任何工作并以 0 个已读取项目完成。 Spring Batch 中开箱即用的所有 ItemReader 实现都默认采用此方法。如果即使存在输入也没有写出任何内容,这可能会导致一些混乱。 (如果文件命名错误等,通常会发生这种情况)因此,应该检查元数据本身,以确定框架需要处理多少工作。但是,如果没有发现任何输入被视为异常怎么办?在这种情况下,以编程方式检查元数据是否未处理任何项目并导致失败是最好的解决方案。因为这是一个常见的用例,所以侦听器仅提供以下功能:

public class NoWorkFoundStepExecutionListener extends StepExecutionListenerSupport {

public ExitStatus afterStep(StepExecution stepExecution) {
    if (stepExecution.getReadCount() == 0) {
        return ExitStatus.FAILED;
    }
    return null;
}

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Batch - 当 ItemReader 没有返回数据时如何使作业失败 的相关文章

随机推荐