美文网首页探索Springspring
Spring Retry使用说明

Spring Retry使用说明

作者: Real_man | 来源:发表于2019-09-27 13:13 被阅读0次

    Spring Retry提供了操作重试的功能,在网络不稳定的情况下,重试功能是比较重要的必备项。Spring Retry可以让我们自定义重试策略,回退策略,重试状态处理。

    使用

    1 添加依赖,默认情况下在Spring Boot中有依赖项。

           
           <dependency>
                <groupId>org.springframework.retry</groupId>
                <artifactId>spring-retry</artifactId>
              <!--  <version>1.1.5.RELEASE</version>  -->
            </dependency>
    
              <!--  Spring Retry使用了AOP -->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.2</version>
            </dependency>
    

    2 配置RetryTemplate,重试策略,回退策略。或者监听器

       @Bean
        public RetryTemplate retryTemplate() {
            RetryTemplate retryTemplate = new RetryTemplate();
    
            // 每次回退固定的时间
    //        FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
    //        fixedBackOffPolicy.setBackOffPeriod(2000l);
    
            // 指数回退,第一次回退0.2s,第二次回退0.4s
            ExponentialBackOffPolicy exponentialBackOffPolicy = new ExponentialBackOffPolicy();
            exponentialBackOffPolicy.setInitialInterval(200L);
            exponentialBackOffPolicy.setMultiplier(2);
            retryTemplate.setBackOffPolicy(exponentialBackOffPolicy);
    
            // 重试策略,有多种重试策略
            SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
            retryPolicy.setMaxAttempts(3);
            retryTemplate.setRetryPolicy(retryPolicy);
    
            retryTemplate.setThrowLastExceptionOnExhausted(false);
    
            return retryTemplate;
        }
    

    3 使用重试功能

         retryTemplate.execute((RetryCallback<Void, RuntimeException>) context -> {
                // 这里写我们的业务代码
                // ....
            
                // 模拟抛出异常
                throw new RuntimeException("异常");
            });
    
    

    4 可以开启日志查看效果

    logging.level.org.springframework.retry=debug
    
    1569552787010

    注解

    • @Retryable
    • @Recover
    • @Backoff

    注意

    Spring Retry有一个缺点,其回退策略,默认使用的是Thread.sleep方法,会导致当前的线程被阻塞,因此使用的时候要注意。

    最后

    简单说明了下Spring Retry的使用方式,使用简单,功能强大。

    参考:https://www.baeldung.com/spring-retry

    相关文章

      网友评论

        本文标题:Spring Retry使用说明

        本文链接:https://www.haomeiwen.com/subject/ebaouctx.html