Resilience4J通过yml设置circuitBreaker()

  本篇文章为你整理了Resilience4J通过yml设置circuitBreaker()的详细内容,包含有 Resilience4J通过yml设置circuitBreaker,希望能帮助你了解 Resilience4J通过yml设置circuitBreaker。

  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;

  

 

  https://gitee.com/gustav0/resilience4-jdemo

  赞赏一下吧~

  如果解决了您的问题,可以赞赏支持一下,感谢大佬们。
 

  以上就是Resilience4J通过yml设置circuitBreaker()的详细内容,想要了解更多 Resilience4J通过yml设置circuitBreaker的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: