Resilience4J设置circuitBreaker
BitBean 人气:0介绍
Resilience4j是一个轻量级、易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计。
springcloud2020升级以后Hystrix被官方移除,Resilience4目前是官方推荐的熔断限流方案。
核心组件
相关问题
按照网上很多文章进行熔断器配置,发现并不能读取配置中的参数,走的还是Resilience4J中CircuitBreakerConfig默认的参数。通过测试实现了一种能读取yml中断路器配置的方案
resilience4j.circuitbreaker: configs: #通用配置 default: # 断路器系统默认配置 #失败率,错误率达到或高于该值则进入open状态 failureRateThreshold: 20 #慢调用阀值,请求执行的时间大于该值时会标记为慢调用 slowCallDurationThreshold: 60s #慢调用熔断阀值,当慢调用率达到或高于该值时,进入open状态 slowCallRateThreshold: 90 #状态滚动收集器大小,close状态时收集多少请求状态,用于计算失败率。 slidingWindowSize: 90 #状态收集器类型 #COUNT_BASED:根据数量计算,slidingWindowSize为次数 #TIME_BASED:根据时间计算,slidingWindowSize为秒数 slidingWindowType: COUNT_BASED #计算错误率的最小请求数,不足最小调用次数不会触发任何变化。 minimumNumberOfCalls: 10 #是否自动进入halfOpen状态,默认false-一定时间后进入halfopen,ture-需要通过接口执行。 automaticTransitionFromOpenToHalfOpenEnabled: false #进入halfOpen状态时,可以被调用次数,就算这些请求的失败率,低于设置的失败率变为close状态,否则变为open。 permittedNumberOfCallsInHalfOpenState: 10 #open状态变为half状态需要等待的时间,即熔断多久后开始尝试访问被熔断的服务。 waitDurationInOpenState: 60s #事件缓冲区大小?? eventConsumerBufferSize: 10 #被计为失败的异常集合,默认情况下所有异常都为失败。 recordExceptions: - java.lang.Exception #不会被计为失败的异常集合,优先级高于recordExceptions。 ignoreExceptions: - java.lang.IllegalStateException instances: #熔断器类型 aCustomizer: #使用默认配置 baseConfig: default cacheCustomizer: #自定义配置 failureRateThreshold: 10
@Bean @Primary public Resilience4JCircuitBreakerFactory resilience4jCircuitBreakerFactory() { Resilience4JCircuitBreakerFactory factory = new Resilience4JCircuitBreakerFactory(); factory.configureDefault( id -> new Resilience4JConfigBuilder(id) .circuitBreakerConfig( circuitBreakerRegistry.circuitBreaker("aCustomizer").getCircuitBreakerConfig() ) .timeLimiterConfig( new TimeLimiterConfig.Builder() .timeoutDuration(Duration.ofSeconds(4)) .cancelRunningFuture(true) .build() ) .build()); System.out.println(factory); return factory; }
源码
加载全部内容