【问题标题】:spring-retry Retryble annotation versus retryTemplatespring-retry Retryble 注释与 retryTemplate
【发布时间】:2019-08-04 11:50:38
【问题描述】:

我正在尝试理解 spring-retry,我看到了 2 种方法,第一种方法很简单

    @Retryable(value = {SomeException1.class,SomeException2.class}, maxAttempts = Constants.RETRY_VAL, backoff = @Backoff(value = Constants.RETRY_BACK))
    public String getData(){...}

以及第二种方式的RetryTemplate(使用RetryCallback/RecoveryCallback执行)。

我的理解是第二个提供了更细粒度的控制。我们什么时候会采用第二种方法?是不是我们有自己的 Backoff 和 retryPolicies 实现?

此外,我找不到使用 @Retryble 注释设置自定义策略的示例或示例。

【问题讨论】:

    标签: java spring spring-boot spring-batch spring-retry


    【解决方案1】:

    在我看来,第二种方法RetryTemplate 是首选。因为这种方法帮助我们在一个地方编写配置并在多个地方使用。

    您还可以创建一个或多个 RetryTemplate bean。每个RetryTemplate bean 都用于异常映射。

    【讨论】:

      【解决方案2】:

      无论哪种方式,您基本上都有同等的控制权。

      要通过Retryable 使用自定义的RetryTemplate,只需将重试拦截器连接为一个bean(使用自定义模板)并在interceptor 属性中提供它。

      /**
       * Retry interceptor bean name to be applied for retryable method. Is mutually
       * exclusive with other attributes.
       * @return the retry interceptor bean name
       */
      String interceptor() default "";
      

      这只是一个偏好问题。

      【讨论】:

      • 感谢您的指导。对于那些觉得它有点神秘的人:要使用注释获得预定义 retryTeplate 的效果,您可以在您的方法上使用类似“@Retryable(interceptor = "infiniteRetriesWithBackoff")”的东西,并在您的配置类中使用 RetryInterceptorBuilder实现一个名为“infiniteRetriesWithBackoff”的bean
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      相关资源
      最近更新 更多