Spring-Retry重试

引入jar包

  <!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
            <version>1.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.6</version>
        </dependency>

启动类添加@EnableRetry.

Demo:

@Service("service")
public class RetryService {

    @Retryable(value = IllegalAccessException.class, maxAttempts = 5,
            backoff= @Backoff(value = 1500, maxDelay = 100000, multiplier = 1.2))
    public void service() throws IllegalAccessException {
        System.out.println("service method...");
        throw new IllegalAccessException("manual exception");
    }

    @Recover
    public void recover(IllegalAccessException e){
        System.out.println("service retry after Recover => " + e.getMessage());
    }

}

@EnableRetry - 表示开启重试机制
@Retryable - 表示这个方法需要重试,它有很丰富的参数,可以满足你对重试的需求
@Backoff - 表示重试中的退避策略
@Recover - 兜底方法,即多次重试后还是失败就会执行这个方法

SimpleRetryPolicy

默认最多重试3次

TimeoutRetryPolicy

默认在1秒内失败都会重试

ExpressionRetryPolicy

符合表达式就会重试

CircuitBreakerRetryPolicy

增加了熔断的机制,如果不在熔断状态,则允许重试

CompositeRetryPolicy

可以组合多个重试策略

NeverRetryPolicy

从不重试(也是一种重试策略哈)

AlwaysRetryPolicy

总是重试

FixedBackOffPolicy

默认固定延迟1秒后执行下一次重试

ExponentialBackOffPolicy

指数递增延迟执行重试,默认初始0.1秒,系数是2,那么下次延迟0.2秒,再下次就是延迟0.4秒,如此类推,最大30秒。

ExponentialRandomBackOffPolicy

在上面那个策略上增加随机性

UniformRandomBackOffPolicy

这个跟上面的区别就是,上面的延迟会不停递增,这个只会在固定的区间随机

StatelessBackOffPolicy

这个说明是无状态的,所谓无状态就是对上次的退避无感知,从它下面的子类也能看出来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值