从Spring7.0版本开始,Spring Framework核心模块已经集成了常用Resilience相关功能,主要包括了对方法调用的失败重试支持以及并发控制支持。SpringBoot 4.0默认的Spring的版本就是Spring 7.0, 因此SpringBoot 4.0自然也就具有了这些特性。本文先来学习下失败重试,下一篇再来学习并发控制。
注解式失败重试@Retryable
@Retryable 注解可以加在单个方法上,设置方法级别的重试,也可以加在类上,给类中所有的通过代理调用的方法统一指定重试特性,使用起来非常简单,仅需2步:
- 在启动类添加
@EnableResilientMethods
java
@EnableResilientMethods
@SpringBootApplication
public class Springboot4Application {
public static void main(String[] args) {
SpringApplication.run(Springboot4Application.class, args);
}
}
- 在业务类或者方法上添加
@Retryable
java
@Retryable
@GetMapping(path = "/demo")
public String demo(){
log.info("RetryController demo");
int a = 1/0;
return "demo";
}
默认情况下,当方法调用抛出任何异常时都将触发重试:初始失败后最多进行 3 次重试尝试(maxRetries = 3),且每次重试之间间隔 1 秒延迟。因此,如果业务方法一直失败的话,最多会被调用1(初始调用)+ 3(最多重试)=4次。
更多关于自定义重试的内容请参考:SpringBoot4.0新特性-Resilience之失败重试