温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Spring的RetryTemplate

发布时间:2021-07-20 22:49:46 阅读:908 作者:chen 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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


 

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

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

 

Maven Dependency

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

<dependency>    <groupId>org.springframework.retry</groupId>    <artifactId>spring-retry</artifactId></dependency>
  

创建Spring Retry Template


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

@Configuration@EnableRetrypublic 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。

@Servicepublic 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  12020-06-16 09:59:52.401  INFO 17288 --- [nio-8080-exec-1] c.e.springretrydemo.NetworkClientService       : N/W configuration Service Failed  22020-06-16 09:59:53.401  INFO 17288 --- [nio-8080-exec-1] c.e.springretrydemo.NetworkClientService       : N/W configuration Service Failed  32020-06-16 09:59:53.402  INFO 17288 --- [nio-8080-exec-1] c.e.springretrydemo.NetworkClientService       : N/W configuration Service Failed  4Exception in thread "NetworkClientService" java.lang.RuntimeException    

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

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/140022/blog/4477194

AI

开发者交流群×