当前位置: 首页 > article >正文

java 重试

@Retryable注解,其中:
value : 指定发生的异常进行重试 
include : 同value , 默认"" , 当exclude也为空时 , 所有异常都重试 
exclude : 排除不重试的异常 , 默认"" , 当include也为空时 , 所有异常都重试
maxAttemps : 尝试次数 , 默认3 . 注意该值包含第一次正常执行的次数 , 即失败之后重新尝试2次 , 一共执行3次
backoff : 重试补偿机制 , 默认无 , 属性配置如下
    delay : 延迟指定时间后(单位毫秒)重试
    multiplier : 指定延迟的倍数 , 每次执行间隔加倍延迟 . 如delay=5000L,multiplier=2 , 第一次重 试为5S后 , 第二次为第一次的10S后 , 第三次为第二次的20S后

@Recover注解,其中:

当重试次数达到限定时 , 会执行@Recover注解的补偿方法 , 只有在入参与发生异常匹配时才会执行该补偿方法,即发生的异常类型需要和@Recover注解的参数一致,@Retryable注解的方法不能有返回值,不然@Recover注解的方法无效

 

@SpringBootApplication
@EnableRetry//启用重试机制
public class RetryApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(RetryApplication.class, args);
    }
}
 
 
/** 出现指定异常时(RuntimeException) , 再重试3次 , 每次延迟5s , 之后每次延迟翻倍*/
    @Retryable(include = {RuntimeException.class}, maxAttempts = 4, backoff = @Backoff(delay = 2000L, multiplier = 2))
    public void work2() {
        System.out.println("执行方法 : " + LocalDateTime.now());
        throw new RuntimeException();//模拟异常
    }
 
 
  /** 当重试次数达到限定时 , 会执行@Recover注解的补偿方法 , 只有在入参与发生异常匹配时才会执行该补偿方法 */
    @Recover
    public void recover(RuntimeException e) {
        System.out.println("执行补偿方法 : " + LocalDateTime.now());
    }

运行结果:

执行方法:2019-12-31T20:17:48.566

执行方法:2019-12-31T20:17:49.567

执行方法:2019-12-31T20:17:50.568

执行补偿方法:2019-12-31T20:17:50.568


http://www.kler.cn/a/7239.html

相关文章:

  • 241113.学习日志——[CSDIY] [ByteDance] 后端训练营 [02]
  • 人工智能与SEO优化中的关键词策略解析
  • Redis性能优化——针对实习面试
  • 《操作系统 - 清华大学》3 -3:连续内存分配:内存碎片与分区的动态分配
  • ReactPress与WordPress:两大开源发布平台的对比与选择
  • 小程序19-微信小程序的样式和组件介绍
  • Python怎么学最高效
  • “我做测试开发的这一年多,月薪5K变成了24K”
  • 【前端面试题——微信小程序】
  • VUE3 学习笔记(六)Post 实现文件下载(Delphi 后台)
  • 【软件设计师06】数据结构与算法基础
  • 朴素贝叶斯程序
  • 【从零开始学习 UVM】12.2、UVM RAL(续更) —— RAL Model 结构
  • Linux系统【Centos7】更新内核更新软件详细教程
  • 详细介绍雷达到达角估计算法3DFFT,DBF,MUSIC,Capon的原理、对比、各自的优势
  • 【新2023Q2模拟题JAVA】华为OD机试 - 预订酒店
  • PB语言实现控制反转(IoC)
  • 【SQL开发实战技巧】系列(三十四):数仓报表场景☞如何对数据分级并行转为列
  • WangEdtior富文本编辑器
  • echarts圆形统计图与柱状图结合
  • 少儿编程 电子学会图形化编程等级考试Scratch二级真题解析(判断题)2022年12月
  • 将本地项目上传到远程仓库的步骤
  • 2.5.3 乘法
  • 【C++从0到1】14、C++中逻辑运算
  • chatGPT 又来帮忙了
  • C++ Primer第五版练习题冲冲冲