欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot配置resilience4j全過(guò)程

 更新時(shí)間:2024年05月17日 16:49:11   作者:wfh小黑屋里的小黃花  
這篇文章主要介紹了springboot配置resilience4j全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot配置resilience4j

resilience4j-ratelimiter:流量控制

單位時(shí)間內(nèi),控制訪問(wèn)方法的數(shù)量

yml配置:

resilience4j.ratelimiter:
  instances:
    backendA: # 名稱(chēng)
      limit-for-period: 3 #限制連續(xù)請(qǐng)求3次
      limit-refresh-period: 1s #1s刷新統(tǒng)計(jì)值
      timeout-duration: 5s #超時(shí)等待時(shí)長(zhǎng)
    backendB: # 名稱(chēng)
      limit-for-period: 5 #限制連續(xù)請(qǐng)求5次
      limit-refresh-period: 1s #1s刷新統(tǒng)計(jì)值
      timeout-duration: 10s #超時(shí)等待時(shí)長(zhǎng)

使用:

@RateLimiter(name = "backendA")

resilience4j-retry:重試

異常重試

resilience4j.retry:
  instances:
    backendA:
      max-retry-attempts: 3 # 重試次數(shù)
      wait-duration: 600 # 重試等待時(shí)間
      # 判斷異常是否需要重試
      retryExceptionPredicate: com.test.manager.exception.RecordFailurePredicate
      retry-exceptions: # 需要重試的異常
        - java.net.SocketTimeoutException
        - java.io.IOException
      ignore-exceptions: # 重試忽略的異常
          - io.github.robwin.exception.BusinessException

RecordFailurePredicate:

class RecordFailurePredicate : Predicate<Throwable> {

    /**
     * 判斷是否需要重試
     *
     * @param t 異常
     * @return
     */
    override fun test(t: Throwable): Boolean {
        // 返回true --> 重試,返回false-->不重試
        return true
    }
}

使用:

@Retry(name = "backendA")

springboot項(xiàng)目如何簡(jiǎn)單整合Resilience4j

Resilience4j是一個(gè)針對(duì)Java 8和以上版本的輕量級(jí)容錯(cuò)庫(kù),它提供了一系列的容錯(cuò)功能,例如斷路器、限流、重試等。這些功能可以幫助開(kāi)發(fā)人員更好地保護(hù)應(yīng)用程序免受故障、延遲和錯(cuò)誤的影響。

在Spring Boot項(xiàng)目中整合Resilience4j非常方便,只需要添加相應(yīng)的依賴(lài),然后使用注解或者編程方式來(lái)配置并啟用所需的Resilience4j功能即可。

添加依賴(lài)

1. 在pom.xml文件中添加以下依賴(lài):

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot2</artifactId>
    <version>1.7.0</version>
</dependency>

此外,還需要根據(jù)需要添加其他Resilience4j模塊的依賴(lài),例如resilience4j-circuitbreaker、resilience4j-retry等。

2. 配置Resilience4j功能

可以通過(guò)注解或者編程方式配置Resilience4j功能。

例如,要在應(yīng)用程序中啟用斷路器功能,可以使用@CircuitBreaker注解進(jìn)行配置:

@Service
public class MyService {
 
    @CircuitBreaker(name = "myService", fallbackMethod = "fallback")
    public String doSomething() {
        // ...
        代碼邏輯
    }
 
    public String fallback(Throwable t) {
        // ...
       回調(diào)邏輯
    }
}
 
//在上面的示例中,
@CircuitBreaker注解將MyService.doSomething()方法標(biāo)記為使用名

為myService的斷路器功能,并指定了一個(gè)回退方法fallback()。

3. 啟用Resilience4j功能

可以通過(guò)在Spring Boot配置文件中添加相應(yīng)的屬性來(lái)啟用Resilience4j功能。

例如,在application.yml文件中添加以下屬性可以啟用Resilience4j的斷路器功能(示例如下):

resilience4j:
  circuitbreaker:
    configs:
      default:
        registerHealthIndicator: true # 是否啟用健康檢查
        ringBufferSizeInClosedState: 5 # 斷路器關(guān)閉時(shí)環(huán)形緩沖區(qū)大小
        ringBufferSizeInHalfOpenState: 3 # 斷路器半開(kāi)時(shí)環(huán)形緩沖區(qū)大小
        waitDurationInOpenState: 10s # 斷路器打開(kāi)后等待時(shí)間
        failureRateThreshold: 50 # 失敗率閾值
        minimumNumberOfCalls: 10 # 最小請(qǐng)求數(shù)
        permittedNumberOfCallsInHalfOpenState: 3 # 斷路器半開(kāi)時(shí)允許的請(qǐng)求數(shù)
    instances:
      backendService:
        circuitBreakerConfig: default # 引用 default 已定義的配置
        registerHealthIndicator: true # 是否啟用健康檢查

4. 配置全局的異常處理器

如果要統(tǒng)一處理 Resilience4j 的異常的話,可以配置一個(gè)全局的異常處理器,將它們捕獲并處理。

示例配置如下:

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(value = {
            CircuitBreakerOpenException.class,
            BulkheadFullException.class,
            RateLimiterFullException.class,
            RequestNotPermitted.class,
            RetryException.class
    })
    public ResponseEntity<Object> handleResilience4jExceptions(Exception ex) {
        // 處理 Resilience4j 異常
    }
}
 
//這里通過(guò) @ControllerAdvice 注解聲明了一個(gè)全局異常處理器,
并使用 @ExceptionHandler 注解指定要處理的 Resilience4j 異常。

此外,還可以通過(guò)編程方式啟用Resilience4j功能。

例如,在Application類(lèi)中添加以下代碼可以自動(dòng)檢測(cè)并注冊(cè)所有帶有@CircuitBreaker注解的服務(wù):

@EnableCircuitBreaker
@SpringBootApplication
public class Application {
    // ...
}

這就是在Spring Boot項(xiàng)目中整合Resilience4j的基本步驟。當(dāng)然,還可以根據(jù)需要進(jìn)行更詳細(xì)的配置和定制。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Java堆內(nèi)存的10個(gè)要點(diǎn)的總結(jié)分析

    基于Java堆內(nèi)存的10個(gè)要點(diǎn)的總結(jié)分析

    本篇文章是對(duì)Java堆內(nèi)存的10個(gè)要點(diǎn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 使用SpringBoot+Prometheus+Grafana實(shí)現(xiàn)可視化監(jiān)控

    使用SpringBoot+Prometheus+Grafana實(shí)現(xiàn)可視化監(jiān)控

    本文主要給大家介紹了如何使用Spring?actuator+監(jiān)控組件prometheus+數(shù)據(jù)可視化組件grafana來(lái)實(shí)現(xiàn)對(duì)Spring?Boot應(yīng)用的可視化監(jiān)控,文中有詳細(xì)的代碼供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-02-02
  • Java多線程下載的實(shí)現(xiàn)方法

    Java多線程下載的實(shí)現(xiàn)方法

    復(fù)習(xí)多線程的時(shí)候,練習(xí)了下,順便記錄一下:
    2013-03-03
  • 詳解Springboot集成sentinel實(shí)現(xiàn)接口限流入門(mén)

    詳解Springboot集成sentinel實(shí)現(xiàn)接口限流入門(mén)

    這篇文章主要介紹了詳解Springboot集成sentinel實(shí)現(xiàn)接口限流入門(mén),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java中的ReentrantReadWriteLock使用詳解

    Java中的ReentrantReadWriteLock使用詳解

    這篇文章主要介紹了Java中的ReentrantReadWriteLock使用詳解,ReentrantReadWriteLock是Java中的一個(gè)鎖實(shí)現(xiàn),它提供了讀寫(xiě)分離的功能,這種讀寫(xiě)分離的機(jī)制可以提高并發(fā)性能,特別適用于讀多寫(xiě)少的場(chǎng)景,需要的朋友可以參考下
    2023-11-11
  • java實(shí)現(xiàn)MD5加密算法的實(shí)例代碼

    java實(shí)現(xiàn)MD5加密算法的實(shí)例代碼

    這篇文章主要介紹了java實(shí)現(xiàn)MD5加密算法的實(shí)例代碼,有需要的朋友可以參考一下
    2013-12-12
  • 一文徹底搞定Java哈希表和哈希沖突

    一文徹底搞定Java哈希表和哈希沖突

    本文介紹了什么是哈希表?什么是哈希函數(shù)?什么是哈希沖突?三個(gè)問(wèn)題的解決方案,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • IDEA中database使用教程

    IDEA中database使用教程

    idea集成了一個(gè)數(shù)據(jù)庫(kù)管理工具,可以可視化管理很多種類(lèi)的數(shù)據(jù)庫(kù),本文主要介紹了IDEA中database使用教程,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-06-06
  • Eclipse/MyEclipse轉(zhuǎn)IntelliJ IDEA完全攻略(圖文)

    Eclipse/MyEclipse轉(zhuǎn)IntelliJ IDEA完全攻略(圖文)

    這篇文章主要介紹了Eclipse/MyEclipse轉(zhuǎn)IntelliJ IDEA完全攻略(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 淺談java字符串比較到底應(yīng)該用==還是equals

    淺談java字符串比較到底應(yīng)該用==還是equals

    這篇文章主要介紹了淺談java字符串比較到底應(yīng)該用==還是equals,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論