Resilience4J通过yml设置circuitBreaker
2023-03-31 10:45:14 时间
介绍
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
赞赏一下吧~
如果解决了您的问题,可以赞赏支持一下,感谢大佬们。
相关文章
- 【.net 深呼吸】连接Access数据库应注意的几点
- 【Win 10 应用开发】Sqlite 数据库的简单用法
- 【Win 10 应用开发】通过数据绑定更新进度条
- 【Win 10 应用开发】UDP广播
- 【Win 10应用开发】延迟共享
- 【Win 10 应用开发】共享目标(UWP)
- 金融/语音/音频处理学术速递[11.24]
- 计算照片的面积(UWP篇)
- 【Win 10应用开发】分阶段进行数据绑定
- 【Win10 应用开发】实现数据的增量加载
- Mysql基础入门知识点总结笔记
- TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的!
- 【Win10应用开发】签名与验证
- BT × IT | 如何利用神经网络做空间转录组分析?
- DSTG:基于图形的卷积网络对空间转录组数据进行去卷积
- 【WP开发】JSON数据的读与写
- 【WP8.1开发】RenderTargetBitmap类的特殊用途
- 【WP 8.1开发】How to 图像处理
- 【WP 8.1开发】如何动态生成Gif动画
- 各种癌症都有自己的细分亚型(数据挖掘可以更进一步)