重试次数配置_SpringBoot系列(21):基于Guava_Retrying机制实现重试功能

对于“接口/方法 重试”,相信很多小伙伴都听说过,但是在实际项目中却很少真正去实践过,在本篇文章中,Debug将给各位小伙伴介绍一种“重试”机制的实现,即Guava_Retrying,相对于传统的Spring_Retrying或者动态代理实现的重试功能而言,本文要介绍的Guava_Retrying机制使用起来将更加容易、灵活性更强!

老赵:“这个 接口/方法 调用又失败了,老李啊,你去写个重试功能吧!”。

老李:“他娘的,这接口调用咋又不行了。。。行吧,老子立马给你撸一个重试功能” 。

这样的对话,相信有些小伙伴会感觉似曾相识!特别是当自己在工位上安安静静的写代码时,会突然性的接到技术老大分配给自己的这种需求。。。没啥好说的,只能潜下心,去研究研究了!

对于“重试”,那可是有场景限制的,不是什么场景都适合重试,比如参数校验不合法、写操作等(因为要考虑到写是否幂等)都不适合重试。

而诸如“远程调用超时”、“网络突然中断”等业务场景则可以进行重试,在微服务 治理框架中,通常都有自己的重试与超时配置,比如Dubbo可以设置retries=1,timeout=500调用失败只重试1次,超过500ms调用仍未返回则调用失败(详情可以观看学习Debug录制的“分布式服务调度Dubbo实战教程 http://www.fightjava.com/web/index/course/detail/2 ”)

对于“外部 RPC 调用”,或者“数据入库”等操作,如果一次操作失败,则可以进行多次重试,从而提高调用成功的可能性。

下面我们基于前面搭建的SpringBoot多模块企业级项目,基于Guava_Retrying初步实现所谓的“重试功能”。工欲善其事必先利其器,首先当然是需要加入Guava_Retrying的依赖Jar,如下所示:

 com.github.rholder guava-retrying 2.0.0

之后,我们来写个简单的入门案例,先来 过一把“接口调用重试”的瘾!

/** * Guava_retrying机制实现重试 * @Author:debug (SteadyJack) * @Link: weixin-> debug0868 qq-> 1948831260 * @Date: 2019/12/1 16:17 **/public class RetryUtil { private static final Logger log= LoggerFactory.getLogger(RetryUtil.class);  private static Integer i=1;  public static Integer execute() throws Exception{ log.info("----重试时 变量i的叠加逻辑----"); return i++; }  public static void main(Stri
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值