SpringRetry重试熔断机制

简介

SpringCloud的重试和熔断机制主要依赖Spring-Retry来实现,完整功能实现主要依赖以下几个对象:

  • RetryOperation:接口,主要定义了重试的API;
  • RetryTemplate: RetryOperation的模板实现,其将重试和熔断功能进行封装,提供健壮性和不易出错的API供大家使用;
  • RetryCallback:进行重试时的相关操作;
  • RecoveryCallback:所有重试都尝试后进行有状态的重试;
  • RetryState:用来记录有状态的重试;
  • RetryContext:重试上下文

RetryTemplate逻辑实现

RetryTemplate是熔断和重试的功能实现模板,其主要属性如下:

  • BackOffPolicy:回退策略,是立即重试还是等一段时间在重试,默认实现是NoBackOffPolicy,也就是失败后立即重试;
  • RetryPolicy:重试策略,重试时将采用何种方式重试;
  • RetryListener[]:重试监听器,业务方用来在重试进行补充操作;
  • RetryContextCache:重试上下文缓存,用于缓存RetryContext;

重试具体逻辑如下:

	protected <T, E extends Throwable> T doExecute(RetryCallback<T, E> retryCallback,
			RecoveryCallback<T> recoveryCallback, RetryState state)
			throws E, ExhaustedRetryException {

		RetryPolicy retryPolicy = this.retryPolicy;
		BackOffPolicy backOffPolicy = this.backOffPolicy;

		// RetryPolicy进行初始化以及在state不为空的情况下进行相关缓存
		RetryContext context = open(retryPolicy, state);
		if (this.logger.isTraceEnabled()) {
			this.logger.trace("RetryContext retrieved: " + context);
		}

		// 注册上下文,以便客户端可以使用该context
		RetrySynchronizationManager.register(context);

		Throwable lastException = null;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值