簡體   English   中英

用參數裝飾 Resilience4j 斷路器中的 function

[英]Decorate function in Resilience4j circuit breaker with parameter

我想用最新的 Resilience4j 斷路器來裝飾我的服務調用,我當前的代碼如下所示:

@Bean
public Function<MyObject1, MyObject2> decoratedFunction(MyService myService) {
    CircuitBreakerRegistry registry = CircuitBreakerRegistry.ofDefaults();
    CircuitBreaker circuitBreaker = registry.circuitBreaker("circuitBreaker");
//decorateFunction method no longer exists :/
    return circuitBreaker.decorateFunction((myObject1) -> myService.makeACall(myObject1))
}

曾經有一個名為decorateFunction的方法,我很想使用它,但由於未知原因,它在最新版本的彈性 4j 中被刪除(我使用的是最新的 1.4 版本)

任何人都知道為什么這個 function 被刪除了,現在的替代品是什么? 我看到有像decorateSupplier這樣的方法,但我需要將參數傳遞給我的服務(在供應商的情況下不允許這樣做)

請使用我們的 Spring 引導啟動器,而不是創建您自己的 CircuitBreakerRegistry。 然后將自動創建的 CircuitBreakerRegistry 注入您的代碼並檢索 CircuitBreaker 實例。

CircuitBreaker circuitBreaker = registry.circuitBreaker("circuitBreaker");

在您的服務代碼中執行:

public MyObject2 makeACall(MyObject1 myObject1) {
    return circuitBreaker.executeSupplier(() -> myService.makeACall(myObject1))
}

由於某種原因,在最新版本的彈性中,這種方法似乎是 static,所以簡單地使用它:

@Bean
public Function<MyObject1, MyObject2> decoratedFunction(MyService myService) {
    CircuitBreakerRegistry registry = CircuitBreakerRegistry.ofDefaults();
    CircuitBreaker circuitBreaker = registry.circuitBreaker("circuitBreaker");
//decorateFunction method is static now
    return CircuitBreaker.decorateFunction(circuitBreaker, (myObject1) -> myService.makeACall(myObject1))
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM