Spring-Retry 重试机制操作

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

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
@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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带着希望活下去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值