介紹
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
贊賞一下吧~
如果解決了您的問題,可以贊賞支持一下,感謝大佬們,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518721.html
標籤:其他
