Resilience4J通過yml設置circuitBreaker

来源:https://www.cnblogs.com/gustavo/archive/2022/10/20/16809872.html
-Advertisement-
Play Games

C語言實現 順序表的存儲結構實現棧 代碼: #include <stdlib.h> #include <stdio.h> #define STACK_INIT_SIZE 100 //棧初始開闢空間大小 #define STACK_INCREMENT 10 //棧追加空間大小 //棧的結構體 type ...


介紹

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

贊賞一下吧~

如果解決了您的問題,可以贊賞支持一下,感謝大佬們。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 滿漢樓02 4.功能實現04 4.6顯示所有菜品 4.6.1思路分析 創建一個菜單表menu,在Domain層創建與菜單表對應的Javabean-Menu類,在DAO層創建MenuDAO,完成對menu表的增刪改查,在Service層創建一個和menu表相關的service類,service類提供給 ...
  • 在筆者之前的文章`《驅動開發:內核特征碼搜索函數封裝》`中我們封裝實現了特征碼定位功能,本章將繼續使用該功能,本次我們需要枚舉內核`LoadImage`映像回調,在Win64環境下我們可以設置一個`LoadImage`映像載入通告回調,當有新驅動或者DLL被載入時,回調函數就會被調用從而執行我們自己... ...
  • 集合 Scala的集合有三大類: 序列Seq、集Set、映射Map 所有的集合都擴展自Iterable特質。對於幾乎所有的集合類 Scala都同時提供了可變和不可變的版本 可變集合 可以在適當的地方被更新或擴展。這意味著你可以修改,添加,移除一個集合的元素。 不可變集合 永遠不會改變。不過,你仍然可 ...
  • LRU:最近最少使用緩存 LRU是Least Recently Used的縮寫,即最近最少使用,是一種常用的頁面置換演算法,選擇最近最久未使用的頁面予以淘汰。該演算法賦予每個頁面一個訪問欄位,用來記錄一個頁面自上次被訪問以來所經歷的時間 t,當須淘汰一個頁面時,選擇現有頁面中其 t 值最大的,即最近最少 ...
  • 過濾組件 查詢所有才涉及到過濾,其他介面都不需要 restful規範中有一條,請求地址中帶過濾條件:分頁、排序、過濾統稱為過濾 內置過濾類 使用內置過濾類的步驟 必須是繼承GenericAPIView+ListModelMixin的之類視圖上 1.配置過濾類 filter_backends=[Sea ...
  • 兄弟們,為了幫助大家更加高效的摸魚,今天分享一個騷操作,Python自動安裝第三方庫! 為了體現小編在懶上的造就,今天再分享一個騷操作:Python自動安裝第三方庫,全自動不需要你動! pip手動安裝 一說Python要安裝哪個模塊,我們第一反應,win+r輸入cmd,pip instll 安裝~ ...
  • SpringIOC源碼 Spring源碼大綱 https://www.processon.com/view/link/5f5075c763768959e2d109df IOC載入流程圖 https://www.processon.com/view/link/5f15341b07912906d9ae8 ...
  • 開始前有必要說一下,這才第二題就碰到了爛尾題,以自己開始的思路交了n次,錯了n詞,最後才19分,後來看了一下大佬的c++代碼(盡然沒有c的代碼),還好c和c++的差別不是特別大,仔細琢磨一遍後突然發現很多地方可以改進,整理思路在此嘗試終於AC,這才第二題啊。。。。 This time, you ar ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...