《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 https://mp.weixin.qq.com/s/_0WtEojq8U8Tn_CANM3kMQ 「coding到灯火阑珊」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

1. CircuitBreakerEvent(熔断器事件)

1),事件机制框架

Resilience4j的事件机制是采用观察者模式设计的。Resilience4j事件的框架代码在:

img

关系如图:

img

EventPublisher是事件发布者接口(被观察者),EventConsumer是事件消费者接口(观察者)。

在EventPublisher中只有一个方法onEvent(EventConsumer onEventConsumer)用于设置处理T事件的消费者。

EventConsumer被注解为@FunctionalInterface,所以它有一个唯一的函数式方法consumeEvent(T event),用来处理T类型的事件。

EventProcessor是EventPublisher的通用实现类,它主要实现了事件消费者的注册及调用相应的函数式方法进行事件处理。

EventProcessor源码如下:

img

img

2),CircuitBreaker的事件类型

CircuitBreakerEvent有六种具体的事件类型,如图:

img

  • CircuitBreakerOnErrorEvent: 请求调用失败时发布的事件
  • CircuitBreakerOnSuccessEvent:请求调用成功时发布的事件
  • CircuitBreakerOnStateTransitionEvent:熔断器状态转换时发布的事件
  • CircuitBreakerOnResetEvent:熔断器重置时发布的事件
  • CircuitBreakerOnIgnoredErrorEvent:当忽略的调用异常发生时发布的事件
  • CircuitBreakerOnCallNotPermittedEvent:当请求不被允许调用时发布的事件

在CircuitBreakerEvent接口中声明了与具体事件相对应的枚举类Type,用来表示事件类型。

img

2),CircuitBreaker的事件处理器

CircuitBreaker的事件处理器CircuitBreakerEventProcessor即是事件的发布者,同时也是事件的处理者。关系如图:

img

在CircuitBreaker.EventPublisher接口中声明了六个方法,用于向EventProcessor中注册处理六种事件的EventConsumer。

img

CircuitBreakerStateMachine.CircuitBreakerEventProcessor实现类:

img

下一篇文章《Resilience4j源码解析-2.6 CircuitBreaker模块之熔断》讲解Resilience4j中的事件机制。

文章目录
  1. 1. 1. CircuitBreakerEvent(熔断器事件)