Resilience4J通過yml設(shè)置circuitBreaker的方法
介紹
Resilience4j是一個(gè)輕量級(jí)、易于使用的容錯(cuò)庫,其靈感來自Netflix Hystrix,但專為Java 8和函數(shù)式編程設(shè)計(jì)。
springcloud2020升級(jí)以后Hystrix被官方移除,Resilience4目前是官方推薦的熔斷限流方案。
核心組件
相關(guān)問題
按照網(wǎng)上很多文章進(jìn)行熔斷器配置,發(fā)現(xiàn)并不能讀取配置中的參數(shù),走的還是Resilience4J中CircuitBreakerConfig默認(rèn)的參數(shù)。通過測(cè)試實(shí)現(xiàn)了一種能讀取yml中斷路器配置的方案
resilience4j.circuitbreaker: configs: #通用配置 default: # 斷路器系統(tǒng)默認(rèn)配置 #失敗率,錯(cuò)誤率達(dá)到或高于該值則進(jìn)入open狀態(tài) failureRateThreshold: 20 #慢調(diào)用閥值,請(qǐng)求執(zhí)行的時(shí)間大于該值時(shí)會(huì)標(biāo)記為慢調(diào)用 slowCallDurationThreshold: 60s #慢調(diào)用熔斷閥值,當(dāng)慢調(diào)用率達(dá)到或高于該值時(shí),進(jìn)入open狀態(tài) slowCallRateThreshold: 90 #狀態(tài)滾動(dòng)收集器大小,close狀態(tài)時(shí)收集多少請(qǐng)求狀態(tài),用于計(jì)算失敗率。 slidingWindowSize: 90 #狀態(tài)收集器類型 #COUNT_BASED:根據(jù)數(shù)量計(jì)算,slidingWindowSize為次數(shù) #TIME_BASED:根據(jù)時(shí)間計(jì)算,slidingWindowSize為秒數(shù) slidingWindowType: COUNT_BASED #計(jì)算錯(cuò)誤率的最小請(qǐng)求數(shù),不足最小調(diào)用次數(shù)不會(huì)觸發(fā)任何變化。 minimumNumberOfCalls: 10 #是否自動(dòng)進(jìn)入halfOpen狀態(tài),默認(rèn)false-一定時(shí)間后進(jìn)入halfopen,ture-需要通過接口執(zhí)行。 automaticTransitionFromOpenToHalfOpenEnabled: false #進(jìn)入halfOpen狀態(tài)時(shí),可以被調(diào)用次數(shù),就算這些請(qǐng)求的失敗率,低于設(shè)置的失敗率變?yōu)閏lose狀態(tài),否則變?yōu)閛pen。 permittedNumberOfCallsInHalfOpenState: 10 #open狀態(tài)變?yōu)閔alf狀態(tài)需要等待的時(shí)間,即熔斷多久后開始嘗試訪問被熔斷的服務(wù)。 waitDurationInOpenState: 60s #事件緩沖區(qū)大小?? eventConsumerBufferSize: 10 #被計(jì)為失敗的異常集合,默認(rèn)情況下所有異常都為失敗。 recordExceptions: - java.lang.Exception #不會(huì)被計(jì)為失敗的異常集合,優(yōu)先級(jí)高于recordExceptions。 ignoreExceptions: - java.lang.IllegalStateException instances: #熔斷器類型 aCustomizer: #使用默認(rèn)配置 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
到此這篇關(guān)于Resilience4J通過yml設(shè)置circuitBreaker的文章就介紹到這了,更多相關(guān)Resilience4J設(shè)置circuitBreaker內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中IO流文件讀取、寫入和復(fù)制的實(shí)例
下面小編就為大家?guī)硪黄狫ava中IO流文件讀取、寫入和復(fù)制的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10手把手教你SpringBoot快速集成Swagger的配置過程
這篇文章主要介紹了手把手教你SpringBoot快速集成Swagger的配置過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Java?SpringBoot?@Async實(shí)現(xiàn)異步任務(wù)的流程分析
這篇文章主要介紹了Java?SpringBoot?@Async實(shí)現(xiàn)異步任務(wù),主要包括@Async?異步任務(wù)-無返回值,@Async?異步任務(wù)-有返回值,@Async?+?自定義線程池的操作代碼,需要的朋友可以參考下2022-12-12在IDEA中實(shí)現(xiàn)同時(shí)運(yùn)行2個(gè)相同的java程序
這篇文章主要介紹了在IDEA中實(shí)現(xiàn)同時(shí)運(yùn)行2個(gè)相同的java程序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02Spring?Security實(shí)現(xiàn)基于RBAC的權(quán)限表達(dá)式動(dòng)態(tài)訪問控制的操作方法
這篇文章主要介紹了Spring?Security實(shí)現(xiàn)基于RBAC的權(quán)限表達(dá)式動(dòng)態(tài)訪問控制,資源權(quán)限表達(dá)式動(dòng)態(tài)權(quán)限控制在Spring Security也是可以實(shí)現(xiàn)的,首先開啟方法級(jí)別的注解安全控制,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04SWT(JFace)體驗(yàn)之FillLayout布局
FillLayout是非常簡(jiǎn)單的一種布局方式,它會(huì)以同樣大小對(duì)父組件中的子組件進(jìn)行布局,這些子組件將以一行或一列的形式排列。2009-06-06