春季批处理-跳过块并在ItemWriter中引发异常时继续下一个

时间:2020-11-02 16:51:33

标签: spring-batch

我们有一个春季批处理作业,该作业具有面向块的步骤,其中一个ItemReader(这是一个JpaItemPagingReader)和两个ItemWriter(使用复合编写器,第一个删除数据库中的实体,第二个持久化项目在Elasticsearch上)。< / p>

如果复合编写器内部发生错误,则“步骤和作业”将失败。相反,我们想跳过大块,然后继续下一个。

我们尝试配置跳过逻辑:

public Step step1() {
    return this.stepBuilderFactory.get("step1")
                .<String, String>chunk(10)
                .reader(itemReader())
                .writer(itemWriter())
                .faultTolerant()
                .skipLimit(10)
                .skip(CustomException.class)
                .build();
}

但是在这种情况下,每个项目都需要在复合编写器中逐个重新处理,这很慢。

是否可以跳过失败的块并继续执行下一个块,而不是从当前块中逐个重试?

0 个答案:

没有答案