SpringRetry重试框架的具体使用

SpringRetry重试框架的具体使用,博智网带你了解详细信息 。
目录

  • 一、环境搭建
  • 二、RetryTemplate
    • 2.1 RetryTemplate
    • 2.2 RetryListener
    • 2.3 回退策略
      • 2.3.1 FixedBackOffPolicy
      • 2.3.2 ExponentialBackOffPolicy
    • 2.4 重试策略
      • 2.5 RetryCallback
        • 2.6 核心使用
        • 三、EnableRetry
          • 四、Retryable

            spring retry主要实现了重试和熔断 。
            不适合重试的场景:
            参数校验不合法、写操作等(要考虑写是否幂等)都不适合重试 。
            适合重试的场景:
            远程调用超时、网络突然中断等可以重试 。
            在spring retry中可以指定需要重试的异常类型,并设置每次重试的间隔以及如果重试失败是继续重试还是熔断(停止重试) 。

            一、环境搭建加入SpringRetry依赖,SpringRetry使用AOP实现,所以也需要加入AOP包
            <!-- SpringRetry --><dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId></dependency>
            官方文档
            二、RetryTemplate
            2.1 RetryTemplate
            • RetryTemplate封装了Retry基本操作
              • org.springframework.retry.support.RetryTemplate
            • RetryTemplate中可以指定监听、回退策略、重试策略等
            • 只需要正常new RetryTemplate()即可使用

            2.2 RetryListenerRetryListener指定了当执行过程中出现错误时的回调
            org.springframework.retry.RetryListener
            package org.springframework.retry;public interface RetryListener { /*** 任务开始执行时调用,只调用一次*/ <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback); /*** 任务执行结束时(包含重试)调用,只调用一次*/ <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable); /*** 出现错误时回调*/ <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable);}
            配置之后在RetryTemplate中指定
            2.3 回退策略
            2.3.1 FixedBackOffPolicy当出现错误时延迟多少时间继续调用
            FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();fixedBackOffPolicy.setBackOffPeriod(1000L);retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
            配置之后在RetryTemplate中指定
            2.3.2 ExponentialBackOffPolicy当出现错误时第一次按照指定延迟时间延迟后按照指数进行延迟
            // 指数回退(秒),第一次回退1s,第二次回退2s,第三次4秒,第四次8秒ExponentialBackOffPolicy exponentialBackOffPolicy = new ExponentialBackOffPolicy();exponentialBackOffPolicy.setInitialInterval(1000L);exponentialBackOffPolicy.setMultiplier(2);retryTemplate.setBackOffPolicy(exponentialBackOffPolicy);
            配置之后在RetryTemplate中指定
            2.4 重试策略重试策略主要指定出现错误时重试次数
            // 重试策略SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();retryPolicy.setMaxAttempts(5);retryTemplate.setRetryPolicy(retryPolicy);
            配置之后在RetryTemplate中指定
            2.5 RetryCallbackRetryCallback为retryTemplate.execute时执行的回调
            public final <T, E extends Throwable> T execute(RetryCallback<T, E> retryCallback) throws E
            SpringRetry重试框架的具体使用


            SpringRetry重试框架的具体使用


            SpringRetry重试框架的具体使用


            【SpringRetry重试框架的具体使用】到此这篇关于SpringRetry重试框架的具体使用的文章就介绍到这了,更多相关SpringRetry重试框架内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!

              推荐阅读