Spring Batch-当ItemReader没有返回数据时如何使作业失败 [英] Spring Batch - how to fail a job when the ItemReader returns no data

查看:12
本文介绍了Spring Batch-当ItemReader没有返回数据时如何使作业失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

当我测试我的应用程序时,我看到即使没有通过JdbcCursorItemReader从数据库返回任何数据,FlatFileItemWriter也会创建一个文件。然而,当数据库中没有合适的数据时,我计划使我的工作失败。是否可以这样做,或者至少可以阻止FlatFileItemWriter创建文件?

问候

推荐答案

发件人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;
}

}

这篇关于Spring Batch-当ItemReader没有返回数据时如何使作业失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆