重试Retryer实例

背景

好的代码应该具备健壮性,比如代码里面调用了一个http请求,如果当时网络抖了下,http就调用失败了,这时候我们往往需要重试,本文我们就来介绍一个功能比较完善的重试组件-Retryer。

实例

我们需要针对接口accountFeignClient.getAccount在出现错误异常时,进行重试

1.添加配置注解@EnableRetry,开启重试功能

在配置类中新增注解@EnableRetry

@EnableRetry
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class})
public class XXXApplication {
...
}

2.封装被调用的接口–需要重试的接口

(1)@Retryable注解定义了重试次数(maxAttempts),间隔时间(value),间隔频率(1.5倍),即每隔1.5秒重试一次

@Service
public class RetryService {

    @Autowired
    private AccountFeignClient accountFeignClient;

    @Retryable(maxAttempts = 3,backoff= @Backoff(value = 1000,multiplier = 1.5))
    public BaseAccountResponse test(){
        System.out.println("retry service test");

        BaseAccountResponse baseAccountResponse = accountFeignClient.getAccount(729060943550464L).getBody();
        return baseAccountResponse;
    }

    @Recover
    public BaseAccountResponse testRetry(){
        BaseAccountResponse baseAccountResponse = new BaseAccountResponse();
        baseAccountResponse.setName("xxx");

        return baseAccountResponse;
    }
 }

3. 调用接口

 @RequestMapping(value = "/test", method = RequestMethod.GET)
    public BaseAccountResponse test(@RequestParam("accountId") String accountId){

        System.out.println("facade test");
        return retryService.test();

    }


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值