范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

一个注解优雅的实现循环重试功能

  在实际工作中,重处理是一个非常常见的场景,比如:
  发送消息失败。
  调用远程服务失败。
  争抢锁失败。
  这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用try/catchwhile循环之类的语法来进行重处理,但是这样的做法缺乏统一性,并且不是很方便,要多写很多代码。然而spring-retry却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能。
  一、@Retryable是什么?
  spring系列的spring-retry是另一个实用程序模块,可以帮助我们以标准方式处理任何特定操作的重试。在spring-retry中,所有配置都是基于简单注释的。
  二、使用步骤
  1.POM依赖org.springframework.retry
  spring-retry
  
  2.启用@Retryable@EnableRetry
  @SpringBootApplication
  public classHelloApplication{
  publicstaticvoidmain(String[] args) {
  SpringApplication.run(HelloApplication.class, args);
  }
  }
  3.在方法上添加@Retryable@Service
  public classTestRetryServiceImplimplementsTestRetryService{
  @Override
  @Retryable(value = Exception.class,maxAttempts = 3,backoff = @Backoff(delay = 2000,multiplier = 1.5))
  public int test(int code) throws Exception{
  System.out.println("test被调用,时间:"+LocalTime.now);
  if (code==0){
  throw new Exception("情况不对头!");
  }
  System.out.println("test被调用,情况对头了!");
  return 200;
  }
  }
  来简单解释一下注解中几个参数的含义:
  value:抛出指定异常才会重试
  include:和value一样,默认为空,当exclude也为空时,默认所有异常
  exclude:指定不处理的异常
  maxAttempts:最大重试次数,默认3次
  backoff:重试等待策略,默认使用@Backoff@Backoff的value默认为1000L,我们设置为2000L;multiplier(指定延迟倍数)默认为0,表示固定暂停1秒后进行重试,如果把multiplier设置为1.5,则第一次重试为2秒,第二次为3秒,第三次为4.5秒。
  当重试耗尽时还是失败,会出现什么情况呢?
  当重试耗尽时,RetryOperations可以将控制传递给另一个回调,即RecoveryCallback。Spring-Retry还提供了@Recover注解,用于@Retryable重试失败后处理方法。如果不需要回调方法,可以直接不写回调方法,那么实现的效果是,重试次数完了后,如果还是没成功没符合业务判断,就抛出异常。
  4.@Recover@Recover
  publicintrecover(Exception e, int code){
  System.out.println("回调方法执行!!!!");
  //记日志到数据库 或者调用其余的方法
  return 400;
  }
  可以看到传参里面写的是 Exception e,这个是作为回调的接头暗号(重试次数用完了,还是失败,我们抛出这个Exception e通知触发这个回调方法)。对于@Recover注解的方法,需要特别注意的是:
  方法的返回值必须与@Retryable方法一致
  方法的第一个参数,必须是Throwable类型的,建议是与@Retryable配置的异常一致,其他的参数,需要哪个参数,写进去就可以了(@Recover方法中有的)
  该回调方法与重试方法写在同一个实现类里面
  5. 注意事项
  由于是基于AOP实现,所以不支持类里自调用方法
  如果重试失败需要给@Recover注解的方法做后续处理,那这个重试的方法不能有返回值,只能是void
  方法内不能使用try catch,只能往外抛异常
  @Recover注解来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中),此注解注释的方法参数一定要是@Retryable抛出的异常,否则无法识别,可以在该方法中进行日志处理。
  本篇主要简单介绍了Springboot中的Retryable的使用,主要的适用场景和注意事项,当需要重试的时候还是很有用的。
  来源:blog.csdn.net/h254931252/article/details/109257998

一加BudsZ2真无线耳塞规格及细节曝光,BudsZ低至百元悲惨让路本月早些时候,一加BudsZ2的渲染图在网上浮出水面。现在,最新的泄漏让我们了解BudsZ2的主要功能和规格。据爆料人MaxJambor透露,新款BudsZ2继续提供杜比全景声音效尽显奢华气质ThomBrowne限量版三星GalaxyWatch4Classic即将发售一直以来,三星就致力于将精致优雅的设计美学融入产品理念之中,带给用户独特的使用体验和时尚表达。并通过与时尚品牌ThomBrowne的长期携手合作,带来众多ThomBrowne限量版苹果客服称限电对iPhone13暂无影响近日,在电力供应紧张背景下,全国多地发布限电通知。有地区居民生活受到影响,而大部分地区则将重点放在企业上,部分企业错峰生产或者停产。其中,苹果的部分重要供应商也因限电陷入停工,有不联想让人意外,18G256G突降1300元,5500mAh八指操控手机行业往往是不进则退的,竞争对手可不会留给你充足的时间改变自己,让自己变得强大,简单来说,一个手机品牌做不起来的话永远都没有机会了。就比如说联想。联想做手机的时间已经很长了,最开真我Q3s被确定骁龙778G144Hz高刷屏5000毫安,10月份发布9月29日消息,一款型号为RMX34613的realme新机入网工信部,应该就是10月份即将发布的realmeQ3s。这是一款主打性价比和长续航的中低端5G手机,有需求的网友可以期让iPhone13续航猛增!这5个iPhone省电小妙招真的管用对于iPhone用户来说,续航是永远的痛。经常有人在后台问教授为啥新买的iPhone用了一年续航就明显下降了为什么设置了省电模式续航还是不够用有没有什么iPhone省电小技巧呀。别中兴Axon305G至臻版快速上手,512GB储存和素皮后盖9月29日,中兴为Axon30系列带来一个新配色Axon305G素皮至臻版。延续了Axon305G的配置,机背换上了素皮材质,储存容量固定到了8GBRAM512GBROM的组合,定苹果为环保取消塑封膜?转转保卖服务助力闲置手机流转更环保随着iPhone13系列的正式开售,不少用户看到了苹果全新的环保包装不再有塑料膜。纵观苹果发展史,在环保话题上可谓一直走在各大手机厂商的前面。从取消充电头和耳机,到将iPhone的中国发电能力一直过剩,可当下十几个省全部限电拉闸,这是为何?根据国家电网的解释,和各方人士的分析,大概就是几个原因吧。一中国发电主力还是火电,煤炭进口受限导致发电的原材料涨价,电厂生产成本高于电价,所以电厂减少产能。二中国承诺炭中和达标,每85英寸巨屏仅售7999元游戏观影神器Vidda85V1FS发布北京商报讯9月29日,海信旗下年轻潮牌Vidda发布首款85英寸巨屏电视85V1FS。该机型不仅提供了优异的音画表现和巨幕视觉震撼,还支持了HDMI2。14K120Hz和VRR等最iQOO9Pro最新消息,IP68120W144Hz,4nm旗舰芯加持iQOO是vivo的子品牌,主攻高端市场。该品牌成立的意义就是为了更好地应对智能手机市场的重新洗牌,也是为了更大程度保证用户粘性,以及给用户带来源源不断的新鲜感。不得不承认,iQO
最值得期待安卓手机,不是小米12,不是华为Mate50近期,智能手机市场风云再起。一波安卓新机来袭,华为P50小米MIX4荣耀Magic3和iQOO8系列,各有特色,给用户带来了不少惊喜。步入9月,苹果发布重磅机型iPhone13系列华为Mate50Pro渲染图抽拉式一体环绕屏,搭载2颗14纳米麒麟芯华为Mate50系列究竟何时发布现在如同谜一般,荣耀Magic3的发布外界均认为是借用了原本属于华为Mate50的外壳,所以这么一来华为Mate50系列的发布就显得遥遥无期。不过有vivo正式官宣X70系列将于9月9日发布,外形拉风,配置豪华vivo9月是手机发布会热度最高的一个月,大大小小的品牌商加起来大概会有一巴掌,这不vivo已经正式官宣,9月9日发布X70系列,这次的宣传语为蔡司影像,品阅时光。关于vivoX7为什么不建议买混合动力汽车?主要的原因有四个不建议买混合动力车的主要原因有四个汽车价格昂贵安全性无法保障充电问题以及维修保养费用较高。在未来的汽车世界,新能源肯定是一个必然的发展趋势,而燃油车和新能源汽车的过渡产品混动汽车,比亚迪7月销量超五万辆破新能源乘用车月销纪录据官方数据显示,比亚迪乘用车7月全系销售56975辆,同比增长89。4,环比增长14。5其中,新能源汽车销量达50057辆,同比增长262。7,环比增长24。8,创比亚迪月销量新高解锁门禁黑科技,OPPO公布新专利,用无线耳机就能开门?无论是在小区学校写字楼等各个场所,我们都能看到有门禁的存在。门禁的出现和存在在一定程度上提高了安全度,保障了人身安全的同时,也避免了不必要的麻烦和问题出现。但在解锁门禁时,仍有相当热烈庆祝后海科技与金睿思齐达成合作近日,后海科技与金睿思齐达成合作,未来,双方将深度沟通,携手并进,在校园内等多个场景继续进行产品的研发与合作。为广大在校师生,推出更多产品体验优良,科技感强的校园跨时代产品。这次是小米平板5销量为何如此之好!亲自上手体验,这些体验不吐不快我自己用小米平板5Pro已经有一段时间了,在这么长的使用体验中,我个人最明显的感觉就是配合手机使用,小米平板5Pro的优势很明显,下面是我自己对小米平板5Pro的一些体验反馈,大家挺进shoppingmall,手机品牌就能躺赢吗?2010年9月26日,北京西单大悦城人头攒动,苹果在中国大陆的第三家直营店即将正式开业,排在队伍前面的几位果粉已经在门店等待了超过24小时。据了解,苹果西单大悦城店开业当天销售额就腾讯视频因为吃相差惹了众怒官媒腾讯视频漠视消费者腾讯视频前几天因为超前点播的事被点名了,上海市消保委在官方微信号发文腾讯视频在热播的电视剧扫黑风暴的超前点播搞捆绑销售,腾讯视频漠视消费者选择权。话说,互联网巨头腾讯也不差钱啊,为奇瑞大蚂蚁这款新能源汽车到底ampampquot有几把刷子ampampquot?随着国家政策的提倡和扶持,很多新能源汽车产品逐渐成为了我们日常出行的工具,奇瑞作为国产汽车中的佼佼者,自然在极力听从国家的政策,大力发展新能源汽车产品。经过长时间的努力,奇瑞新能源