背景:
#个人学习记录
开发时,与第三方对接时,当调用接口时发生异常,需要重新触发业务操作
实现:spring-retry
导包
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
启动类添加注解
@EnableRetry
public class XxApplication{
}
需要重试的方法
@GetMapping("/retry")
@Retryable(value = Exception.class,maxAttempts = 4,backoff = @Backoff(delay = 2000,multiplier = 1.5))
public AjaxResult retry() {
if(true){
throw new ServiceException("Simulating an exception");
}
System.err.println("@Retryable");
return AjaxResult.success();
}
重试后失败的方法
@Recover
public AjaxResult recover(ServiceException e){
System.err.println("@Recover");
//记日志到数据库
return AjaxResult.error("失败");
}
注意点
标记@Recover注解的方法的返回值,必须与标记@Retryable方法的返回值一致 回调方法与重试方法写在同一个实现类里面 @Recover注解的方法的第一个参数,必须是Throwable类型的,建议是与@Retryable配置的异常一致
本文介绍了如何在SpringBoot项目中利用spring-retry库处理接口调用时的异常,包括添加依赖、配置@Retryable和@Recover注解,以及注意事项。重点讲解了如何实现自动重试和失败后的恢复逻辑。
1038

被折叠的 条评论
为什么被折叠?



