Java 弹性4J断路器的参数化修饰功能
我想用最新的resilience4j断路器来装饰我的服务呼叫,我当前的代码如下:Java 弹性4J断路器的参数化修饰功能,java,spring,resilience4j,Java,Spring,Resilience4j,我想用最新的resilience4j断路器来装饰我的服务呼叫,我当前的代码如下: @Bean public Function<MyObject1, MyObject2> decoratedFunction(MyService myService) { CircuitBreakerRegistry registry = CircuitBreakerRegistry.ofDefaults(); CircuitBreaker circuitBreaker = registr
@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))
}
@Bean
公共函数装饰函数(MyService MyService){
CircuitBreakerRegistry注册表=CircuitBreakerRegistry.ofDefaults();
断路器断路器=注册表。断路器(“断路器”);
//装饰函数方法不再存在:/
返回断路器.decorateFunction((myObject1)->myService.makeACall(myObject1))
}
以前有一个名为decorateFunction
的方法,我很想使用它,但由于未知原因,它在最新版本的resilience4j中被删除(我使用的是最新的1.4版本)
有人知道为什么这个功能被删除了,现在的替代品是什么吗?
我看到有像
装饰供应商
这样的方法,但我需要向我的服务传递一个参数(这在供应商的情况下是不允许的)在最新版本的弹性中,由于某些原因,此方法是静态的,因此简单地使用它:
@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))
}
@Bean
公共函数装饰函数(MyService MyService){
CircuitBreakerRegistry注册表=CircuitBreakerRegistry.ofDefaults();
断路器断路器=注册表。断路器(“断路器”);
//装饰函数方法现在是静态的
返回断路器.decorateFunction(断路器,(myObject1)->myService.makeACall(myObject1))
}
请使用我们的Spring Boot Starter,而不是创建您自己的CircuitBreakerRegistry。
然后将自动创建的断路器注册表注入代码并检索断路器实例
CircuitBreaker circuitBreaker = registry.circuitBreaker("circuitBreaker");
在您的服务代码中,请执行以下操作:
public MyObject2 makeACall(MyObject1 myObject1) {
return circuitBreaker.executeSupplier(() -> myService.makeACall(myObject1))
}