用参数装饰 Resilience4j 断路器中的函数
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
,我很想用它,但不知什么原因,它在最新版本的resilience4j中被删除了(我使用的是最新的1.4版本)
任何人都知道为什么这个功能被删除了,它的当前替代品是什么?
我看到有像 decorateSupplier
这样的方法,但我需要向我的服务传递一个参数(供应商不允许这样做)
看起来在最新版本的弹性中这个方法出于某种原因是静态的,所以简单地使用它:
@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))
}
请使用我们的 Spring Boot Starter 而不是创建您自己的 CircuitBreakerRegistry。
然后将自动创建的 CircuitBreakerRegistry 注入您的代码并检索 CircuitBreaker 实例。
CircuitBreaker circuitBreaker = registry.circuitBreaker("circuitBreaker");
在您的服务代码中执行:
public MyObject2 makeACall(MyObject1 myObject1) {
return circuitBreaker.executeSupplier(() -> myService.makeACall(myObject1))
}
我想用最新的 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
,我很想用它,但不知什么原因,它在最新版本的resilience4j中被删除了(我使用的是最新的1.4版本)
任何人都知道为什么这个功能被删除了,它的当前替代品是什么?
我看到有像 decorateSupplier
这样的方法,但我需要向我的服务传递一个参数(供应商不允许这样做)
看起来在最新版本的弹性中这个方法出于某种原因是静态的,所以简单地使用它:
@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))
}
请使用我们的 Spring Boot Starter 而不是创建您自己的 CircuitBreakerRegistry。 然后将自动创建的 CircuitBreakerRegistry 注入您的代码并检索 CircuitBreaker 实例。
CircuitBreaker circuitBreaker = registry.circuitBreaker("circuitBreaker");
在您的服务代码中执行:
public MyObject2 makeACall(MyObject1 myObject1) {
return circuitBreaker.executeSupplier(() -> myService.makeACall(myObject1))
}