首页 > 解决方案 > 在 Spring Batch 中实现容错

问题描述

我在 Spring Batch 配置中实现了以下批处理作业:

@Bean
public Job myJob(Step step1, Step step2, Step step3) {
    return jobs.get("myJob").start(step1).next(step2).next(step3).build();
}

@Bean
public Step step1(ItemReader<String> myReader,
        ItemProcessor<String, String> myProcessor,
        ItemWriter<String> myWriter) {
    return steps.get("step1").<String, String>chunk(1)
            .reader(myReader)
            .processor(myProcessor)
            .writer(myWriter)
            .build();
}

我想在某些异常上重试第 1 步(也是第 2 步和第 3 步等),并在任何失败时回滚作业(也在重试之间)。我知道回滚不会是自动的,并且我很清楚在编写自定义代码时每个步骤要回滚什么。

实现这一点的最佳方法是什么?

标签: javaspring-bootspring-batchspring-retry

解决方案


Spring 框架提供了@Retryable 和@Recover 注解来重试和在失败时恢复。你可以查看这篇文章。https://www.baeldung.com/spring-retry


推荐阅读