Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹性4J断路器的参数化修饰功能_Java_Spring_Resilience4j - Fatal编程技术网

Java 弹性4J断路器的参数化修饰功能

Java 弹性4J断路器的参数化修饰功能,java,spring,resilience4j,Java,Spring,Resilience4j,我想用最新的resilience4j断路器来装饰我的服务呼叫,我当前的代码如下: @Bean public Function<MyObject1, MyObject2> decoratedFunction(MyService myService) { CircuitBreakerRegistry registry = CircuitBreakerRegistry.ofDefaults(); CircuitBreaker circuitBreaker = registr

我想用最新的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))
}
@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))
}