如何使用Spring的RetryTemplate

本篇内容介绍了“如何使用Spring的RetryTemplate”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了吉水免费建站欢迎大家使用!


 

在云计算场景中,网络是其中的一个重要部分。实际情况下的网络环境没有开发环境的网络那么稳定,所以在云计算中,网络是不可靠的已经成为了一条默认的潜规则。在系统研发的过程中,满足正常的业务需求的必要前提下,系统的鲁棒性,容错性也成为了一个重要的技术需求。
在网络不可靠的环境中,要保证业务流程,就需要在网络异常时对流程异常环节进行重试处理。

Spring框架为我们提供了重试机制,接下来我们来试验下Spring的重试。

 

Maven Dependency

假设项目是Maven管理的,需要在家pom中增加spring-retry包的依赖。


   org.springframework.retry
   spring-retry

 

 

创建Spring Retry Template


创建一个Bean配置类来管理bean,使用@EnableRetry来启用Spring重试,通过@Bean注解创建一个RetryTemplate加入Spring Container。配置最大重试次数为4。

@Configuration
@EnableRetry
public class BeanSeederServices {

   @Bean
   public RetryTemplate retryTemplate() {
       SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
       retryPolicy.setMaxAttempts(4);
       FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy();
       backOffPolicy.setBackOffPeriod(3000);
       RetryTemplate template = new RetryTemplate();
       template.setRetryPolicy(retryPolicy);
       template.setBackOffPolicy(backOffPolicy);
       return template;
   }
}
 
 

 

构建重试逻辑

创建一个Service,在里面使用我们构建的RetryTemplate,将需要重试的业务逻辑交给RetryTemplate。


@Service
public class ConfigureNetworkService
{

 @Autowired
 private RetryTemplate retryTemplate;
 int counter =0;
 private void configureNetworkSystem(){
  retryTemplate.execute(
      context -> {
                  verifyNwConfiguration();
                   return true;
               });  
 }
 
 private void verifyNwConfiguration(){
   counter++;
   LOGGER.info("N/W configuration Service Failed "+ counter);
   throw new RuntimeException();
 }
}
 


创建一个Controller,用来提供执行入口,通过url来触发我们的重试功能。


@RestController
@RequestMapping(value="/networksrv")
public class NetworkClientService {
   @Autowired
   private ConfigureNetworkService configureNetworkService;
   @GetMapping
   public String callRetryService() throws SQLException {
       return configureNetworkService.configureNetworkSystem();
   }
}
    

在控制台我们会看到Spring输出的重试日志

2020-06-16 09:59:51.399  INFO 17288 --- [nio-8080-exec-1] c.e.springretrydemo.NetworkClientService       : N/W configuration Service Failed  1
2020-06-16 09:59:52.401  INFO 17288 --- [nio-8080-exec-1] c.e.springretrydemo.NetworkClientService       : N/W configuration Service Failed  2
2020-06-16 09:59:53.401  INFO 17288 --- [nio-8080-exec-1] c.e.springretrydemo.NetworkClientService       : N/W configuration Service Failed  3
2020-06-16 09:59:53.402  INFO 17288 --- [nio-8080-exec-1] c.e.springretrydemo.NetworkClientService       : N/W configuration Service Failed  4
Exception in thread "NetworkClientService" java.lang.RuntimeException
    

“如何使用Spring的RetryTemplate”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


文章标题:如何使用Spring的RetryTemplate
标题路径:http://pwwzsj.com/article/iiddis.html