Spring Cloud Gateway自定义过滤器实战(观测断路器状态变化)

  • 展开上图红框右侧的reactiveCircuitBreakerFactory.create方法继续看,最终跟踪到了ReactiveResilience4JCircuitBreakerFactory类,发现了一个极其重要的变量,就是下图红框中的circuitBreakerRegistry,它的内部有个ConcurrentHashMap(InMemoryRegistryStore的entryMap),这里面存放了所有断路器实例:

在这里插入图片描述

  • 此时您应该想到了,拿到断路器的关键就是拿到上图红框中的circuitBreakerRegistry对象,不过怎么拿呢?首先它是私有类型的,其次虽然有个方法返回了该对象,但是此方法并非public的,如下图红框:

在这里插入图片描述

  • 这个问题当然难不倒聪明的您了,没错,用反射修改此方法的访问权限,稍后的代码中咱们就这么干

  • 还剩最后一个问题:circuitBreakerRegistry是ReactiveResilience4JCircuitBreakerFactory的成员变量,这个ReactiveResilience4JCircuitBreakerFactory从哪获取?

  • 如果您配置过断路器,对这个ReactiveResilience4JCircuitBreakerFactory就很熟悉了,设置该对像是配置断路器的基本操作,回顾一下前文的代码:

@Configuration

public class CustomizeCircuitBreakerConfig {

@Bean

public ReactiveResilience4JCircuitBreakerFactory defaultCustomizer() {

CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom() //

.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.TIME_BASED) // 滑动窗口的类型为时间窗口

.slidingWindowSize(10) // 时间窗口的大小为60秒

.minimumNumberOfCalls(5) // 在单位时间窗口内最少需要5次调用才能开始进行统计计算

.failureRateThreshold(50) // 在单位时间窗口内调用失败率达到50%后会启动断路器

.enableAutomaticTransitionFromOpenToHalfOpen() // 允许断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值