介绍

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的更多相关文章

  1. docker-compose.yml 配置文件详解及项目发布

    摘自:https://blog.csdn.net/qq_36148847/article/details/79427878 docker部署tomcat项目 1.上传war包2.制作镜像 Docker ...

  2. springboot redis多数据源设置

    遇到这样一个需求:运营人员在发布内容的时候可以选择性的发布到测试库.开发库和线上库. 项目使用的是spring boot集成redis,实现如下: 1. 引入依赖 <dependency> ...

  3. SpringBoot使用注解(@value)读取properties(yml)文件中 配置信息

    为了简化读取properties文件中的配置值,spring支持@value注解的方式来获取,这种方式大大简化了项目配置,提高业务中的灵活性. 1. 两种使用方法1)@Value("#{co ...

  4. hexo的jacman主题设置语言为英文后偶尔出现中文

    发现这个问题也好久了.问题的具体表现是在根目录下的_config.yml设置了语言为英文,但是每次发布后都会更换一次语言.今天看了文件结构,知道了,每换一次语言“英文.简体中文.繁体中文”,就是这三种 ...

  5. gitlab 安装、备份与还原及常见设置

    gitlab 安装.备份与还原及常见设置 安装 安装过程比较简单,跑在 docker 上,执行命令即可 -v参数后面的值为卷的名称,自动创建数据卷(如果数据卷不存在) https://docs.git ...

  6. Docker安装GitLab与Runner(网关),常规设置,自动化用到k8s+token

    [转]图文详解k8s自动化持续集成之GitLab CI/CD Windows里面使用Debian命令行工具完成 和Docker网络相关的命令 查看某一个容器的网络 docker inspect 容器I ...

  7. Spring Retry 在SpringBoot 中的应用

    Spring Boot中使用Spring-Retry重试框架 Spring Retry提供了自动重新调用失败的操作的功能.这在错误可能是暂时的(例如瞬时网络故障)的情况下很有用. 从2.2.0版本开始 ...

  8. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  9. ubuntu 安装Elasticsearch5.0(Debian包)

    通过Debian包安装Elasticsearch Elasticsearch的Debian包可以从downloaded from our website或APT repository 它可以用于在任何 ...

随机推荐

  1. 机器学习(公式推导与代码实现)--sklearn机器学习库

    一.scikit-learn概述 1.sklearn模型   sklearn全称是scikit-learn,它是一个基于Python的机器学习类库,主要建立在NumPy.Pandas.SciPy和Ma ...

  2. 论文翻译:2021_LACOPE: Latency-Constrained Pitch Estimation for Speech Enhancement

    论文地址:延迟约束的语音增强基音估计 引用格式:Schröter H, Rosenkranz T, Escalante-B A N, et al. LACOPE: Latency-Constraine ...

  3. SQL SERVER数据库服务器CPU不能全部利用原因分析

    背景 客户凌晨把HIS数据库迁移到配置更高的新服务器,上午业务高峰时应用非常缓慢,严重影响到业务运行.   1.现象 通过SQL专家云实时可视化界面看到大量的绿点,绿点表示会话在等待某项资源,绿点越大 ...

  4. 微服务性能分析|Pyroscope 在 Rainbond 上的实践分享

    随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...

  5. ViewGroup事件分发源码分析

    1.AndroidStudio源码调试方式 AndroidStudio默认是支持一部分源码调试的,但是build.gradle(app) 中的sdk版本要保持一致, 最好是编译版本.运行版本以及手机的 ...

  6. HC32L110(五) Ubuntu20.04 VSCode的Debug环境配置

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  7. Docker_构建_运行总结

    样例: 构建镜像 build-image-fim-backend.sh echo "开始构建 fim-backend 镜像..." cp -rp ../target/fim-bac ...

  8. 用bash反弹shell

    用bash反弹shell 受害主机:linux系统 攻击机:需要安装netcat(nc) 受害主机执行:ifconfig  ## 查看受害主机ip 攻击机执行:nc -lvp 19999 ## 在攻击 ...

  9. 可靠的自托管「GitHub 热点速览 v.22.37」

    自托管(Self-Hosted) 是很多开源项目主打的亮点:数据在手,安全我有.本周 GitHub 热点榜单上有多款自托管的项目,当中自然不能少了之前 HG 小伙伴 @makes world simp ...

  10. C#,使用NPOI,导出excel文件

    /// <summary> /// 导出excel文件 /// </summary> /// <param name="dt">Table表数据 ...