如何使用春天的RetryTemplate

  介绍

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

<节>
  ,

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

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


,

Maven依赖

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

 <代码> & lt; dependency> 
,,& lt; groupId> org.springframework.retry
,,& lt; artifactId> spring-retry
& lt;/dependency>
  ,


,

创建春重试模板


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

 <代码> @ configuration 
@EnableRetry
公共类BeanSeederServices {

,@ bean
大敌;,公共RetryTemplate RetryTemplate () {
,,,,SimpleRetryPolicy retryPolicy=new SimpleRetryPolicy ();
,,,,retryPolicy.setMaxAttempts (4),
,,,,FixedBackOffPolicy backOffPolicy=new FixedBackOffPolicy ();
,,,,backOffPolicy.setBackOffPeriod (3000)。
,,,,RetryTemplate模板=new RetryTemplate ();
,,,,template.setRetryPolicy (retryPolicy);
,,,,template.setBackOffPolicy (backOffPolicy);
,,,,返回模板;
,,}
}
  ,
  ,


,

构建重试逻辑

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

 <代码> 
@ Service
公共类ConfigureNetworkService
{

, @ autowired
,私人RetryTemplate RetryTemplate;
, int counter=0;
,私人空间configureNetworkSystem () {
,retryTemplate。execute (
,,,上下文→{
,,,,,,,,,verifyNwConfiguration ();
,,,,,,,,,,返回true;
,,,,,,,,});,
}
,
,私人空间verifyNwConfiguration () {
,柜台,+ +,
,,LOGGER.info (“N/W配置服务失败的“+计数器),
,新,抛出RuntimeException ();
,}
}
  ,


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

 <代码> 
@RestController
@RequestMapping (value=https://www.yisu.com/zixun//networksrv)
公共类NetworkClientService {
,@ autowired
大敌;,私人ConfigureNetworkService ConfigureNetworkService;
,,@GetMapping
,,公共字符串callRetryService()抛出SQLException {
,,,,返回configureNetworkService.configureNetworkSystem ();
,,}
} ,

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

 <代码> 2020-06-16 09:59:51.399,信息17288 - - - - - - [nio - 8080 - exec - 1] c.e.springretrydemo。NetworkClientService,,,1:N/W配置服务失败,
2020-06-16 09:59:52.401,信息17288 - - - - - - [nio - 8080 - exec - 1] c.e.springretrydemo。NetworkClientService,,,:N/W配置服务失败,2
2020-06-16 09:59:53.401,信息17288 - - - - - - [nio - 8080 - exec - 1] c.e.springretrydemo。NetworkClientService,,,:N/W配置服务失败,3
2020-06-16 09:59:53.402,信息17288 - - - - - - [nio - 8080 - exec - 1] c.e.springretrydemo。NetworkClientService,,,:N/W配置服务失败,4
异常线程“NetworkClientService"java.lang.RuntimeException>

如何使用春天的RetryTemplate