spring retry 使用笔记

添加依赖

implementation "org.springframework.retry:spring-retry"

启用重试

添加注解 @EnableRetry

在代码上添加注解

@Service
public class TestService {

	private static final Logger log = LoggerFactory.getLogger(TestService.class);

	@Retryable(
			// 最大重试次数,使用耗尽会触发 Recover(如果有配置)
			maxAttempts = 4,
			// backoff 重试策略
			backoff = @Backoff(delay = 1000, maxDelay = 1500),
			// 触发指定异常开始重试
			value = ArithmeticException.class)
	public void compute(int c) throws ArithmeticException {
		log.info("compute: {} {}", c, DateFormat.getTimeInstance().format(new Date()));
		System.out.println(c / 0);
	}

	// Recover 表示重试失败后交给用户执行逻辑
	// 异常需要在第一个参数
	@Recover
	public void recover(ArithmeticException e, int c) {
		log.info("recover: {}", c, e);
	}
}

如果使用Recover注解,需要和被调用方拥有相同参数和返回值
当重试次数耗尽后,会通过Recover定义的方法返回结果
重试的过程是同步进行的

有状态的重试

Retryable 注解设置 stateful = true

需要配置 RetryContextCache

调用方需要自己捕获异常然后再次调用,框架会记录重试次数

一篇比较好懂的说明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值