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的更多相关文章
- docker-compose.yml 配置文件详解及项目发布
摘自:https://blog.csdn.net/qq_36148847/article/details/79427878 docker部署tomcat项目 1.上传war包2.制作镜像 Docker ...
- springboot redis多数据源设置
遇到这样一个需求:运营人员在发布内容的时候可以选择性的发布到测试库.开发库和线上库. 项目使用的是spring boot集成redis,实现如下: 1. 引入依赖 <dependency> ...
- SpringBoot使用注解(@value)读取properties(yml)文件中 配置信息
为了简化读取properties文件中的配置值,spring支持@value注解的方式来获取,这种方式大大简化了项目配置,提高业务中的灵活性. 1. 两种使用方法1)@Value("#{co ...
- hexo的jacman主题设置语言为英文后偶尔出现中文
发现这个问题也好久了.问题的具体表现是在根目录下的_config.yml设置了语言为英文,但是每次发布后都会更换一次语言.今天看了文件结构,知道了,每换一次语言“英文.简体中文.繁体中文”,就是这三种 ...
- gitlab 安装、备份与还原及常见设置
gitlab 安装.备份与还原及常见设置 安装 安装过程比较简单,跑在 docker 上,执行命令即可 -v参数后面的值为卷的名称,自动创建数据卷(如果数据卷不存在) https://docs.git ...
- Docker安装GitLab与Runner(网关),常规设置,自动化用到k8s+token
[转]图文详解k8s自动化持续集成之GitLab CI/CD Windows里面使用Debian命令行工具完成 和Docker网络相关的命令 查看某一个容器的网络 docker inspect 容器I ...
- Spring Retry 在SpringBoot 中的应用
Spring Boot中使用Spring-Retry重试框架 Spring Retry提供了自动重新调用失败的操作的功能.这在错误可能是暂时的(例如瞬时网络故障)的情况下很有用. 从2.2.0版本开始 ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
- ubuntu 安装Elasticsearch5.0(Debian包)
通过Debian包安装Elasticsearch Elasticsearch的Debian包可以从downloaded from our website或APT repository 它可以用于在任何 ...
随机推荐
- 【原创】Python 网易易盾滑块验证
本文仅供学习交流使用,如侵立删! 记一次 网易易盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.PIL.numpy.scipy.matplotlib 分析 ...
- 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!
点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...
- jQuery 选择器选中某节点,在后续的链式操作函数内使用 $(this) 的结果是 Window 对象,而非该节点对象
<ul class="tree-ocx"> <li class="tree-ocx-li" data-displayed="fals ...
- 前端架构-分层而治,铁打的MV流水的C
大家好,我是Eluxjs的作者,Eluxjs是一套基于"微模块"和"模型驱动"的跨平台.跨框架『同构方案』,欢迎了解... 文前声明,以下推断和结论纯属个人探索 ...
- 使用RandomAccessFile实现数据的插入效果
@Testpublic void test3() { RandomAccessFile raf1 = null; try { raf1 = new RandomAccessFile("hel ...
- 利用Hugging Face中的模型进行句子相似性实践
Hugging Face是什么?它作为一个GitHub史上增长最快的AI项目,创始人将它的成功归功于弥补了科学与生产之间的鸿沟.什么意思呢?因为现在很多AI研究者写了大量的论文和开源了大量的代码, ...
- Android Kotlin Annotation Processer
Annotation Processer 注解处理器(Annotation Processer)是javac内置的注解处理工具,可以在编译时处理注解,让我们自己做相应的处理.比如生成重复度很高的代码, ...
- C# using()的本质
" 程序世界没有秘密,所有答案都在源码里 " 01.点明观点 C#中,非托管资源使用之后必须释放,而using()是使用非托管资源的最佳方式,可以确保资源在代码块结束之后被正确释放 ...
- 实践分享!GitLab CI/CD 快速入门
用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建.测试和验证代码 ...
- 【Traefik二次开发】服务 Service 开发
Service 定义 https://doc.traefik.io/traefik/routing/services/ The Services are responsible for configu ...