【问题标题】:How to ask Spring Batch to retry a failed step after some amount of time?如何让 Spring Batch 在一段时间后重试失败的步骤?
【发布时间】:2016-08-04 15:12:12
【问题描述】:

如何让 Spring Batch 在一段时间后重试失败的步骤?

如果该步骤失败的次数超过 x 次,我不想再重试该步骤并让整个作业失败。

我正在使用 Java Config,不喜欢使用 XML 来配置重试。

【问题讨论】:

标签: spring spring-batch spring-retry


【解决方案1】:

如果您使用的是2.2.0 之前的版本Spring Batch,请使用Retry functionality included in the Spring Batch library

如上面引用的 Spring Batch 文档页面的开头所述,用于重试:

自 2.2.0 起,重试功能已从 Spring Batch 中移除。它现在是新库 Spring Retry 的一部分。

否则直接使用Spring Retry 直接(衍生 Spring Batch 项目)添加一些很好的声明方式来注释您需要的功能:

@Service
class MyService {
    //...
    @Retryable(maxAttempts=5, backoff=@Backoff(delay=100, maxDelay=500))
    public myFunctionalityService() {
        // ...
    }
    // ...
}

【讨论】:

  • 谢谢。这很有帮助。如何将此应用于 Spring Batch 步骤?
  • 从 1.3.1.RELEASE 迁移到 1.4.0.RELEASE spring-boot-starter-batch 后工作
【解决方案2】:

这里没问题

http://docs.spring.io/spring-batch/reference/html/retry.html

有一些已实施的重试策略,但我认为在您的情况下,您需要实施接口 RetryPolicy 以便满足您的需求。

【讨论】:

  • 不幸的是,这是一个很好的功能列表,但没有说明如何使用它。一些例子会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多