跳到主要内容

(五):核心模块CircuitBreaker源码之CircuitBreakerState

文章目录

  • CircuitBreakerState

    • ClosedState
  • OpenState

  • HalfOpenState

  • DisabledState

  • ForcedOpenState

CircuitBreakerState

> 熔断状态抽象类,内置熔断状态有限机CircuitBreakerStateMachine 来进行熔断状态转换。

	//通过stateMachine进行熔断状态转换
CircuitBreakerStateMachine stateMachine;
//判断是否允许请求被通过
abstract boolean isCallPermitted();
//请求出现异常处理策略,更新熔断指标,并判断是否要转换熔断状态
abstract void onError(Throwable throwable);
//请求成功处理策略,更新熔断指标,并判断是否要转换熔断状态
abstract void onSuccess();
//返回当前熔断状态
abstract CircuitBreaker.State getState();
//返回当前熔断度量指标
abstract CircuitBreakerMetrics getMetrics();
//根据熔断状态枚举配置或熔断事件枚举配置判断是否需要发布熔断事件
boolean shouldPublishEvents(CircuitBreakerEvent event){
return event.getEventType().forcePublish || getState().allowPublish;
}

CircuitBreakerState子类有如下几种,每个子类都有不同的接口实现:
 

ClosedState

> 熔断关闭状态,其有以下两个成员变量

  • CircuitBreakerMetrics circuitBreakerMetrics;(熔断度量指标)