Spring cloud 无功弹性弹簧云断路器4J

Spring cloud 无功弹性弹簧云断路器4J,spring-cloud,resilience4j,Spring Cloud,Resilience4j,我对使用WebClient的断路器感到困惑。当依赖服务关闭时,不会执行回退。 我需要额外的配置吗 对于使用RestTemplate的断路器,无需进一步配置即可工作。请参见我的示例代码: 这是我的例子 @GetMapping("/") public Mono<String> hello() { return webClient.build() .get().uri(uriBuilder -> uriBuilder

我对使用
WebClient
断路器感到困惑。当依赖服务关闭时,不会执行回退。
我需要额外的配置吗

对于使用
RestTemplate
断路器
,无需进一步配置即可工作。请参见我的示例代码:

这是我的例子

    @GetMapping("/")
    public Mono<String> hello() {
        return webClient.build()
                .get().uri(uriBuilder -> uriBuilder
                        .scheme("http")
                        .host("slow-service").path("/slow")
                        .build())
                .retrieve().bodyToMono(String.class).transform(it -> {
                    CircuitBreaker cb = circuitBreakerFactory.create("slow");
                    return cb.run(() -> it, throwable -> Mono.just("fallback"));
                });
    }
@GetMapping(“/”)
公共单声道hello(){
返回webClient.build()
.get().uri(uriBuilder->uriBuilder
.scheme(“http”)
.host(“慢速服务”).path(“/slow”)
.build())
.retrieve().BodyToNo(String.class).transform(it->{
断路器cb=断路器工厂。创建(“慢”);
返回cb.run(()->it,throwable->Mono.just(“fallback”);
});
}
使用以下配置:

    @Bean
    public Customizer<ReactiveResilience4JCircuitBreakerFactory> defaultCustomizer() {
        return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
                .circuitBreakerConfig(ofDefaults())
                .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(3)).build()).build());
    }

    @Bean
    @LoadBalanced
    public WebClient.Builder webClient() {
        return WebClient.builder();
    }


@Bean
公共自定义程序defaultCustomizer(){
返回factory->factory.configureDefault(id->new Resilience4JConfigBuilder(id)
.circuitBreakerConfig(ofDefaults())
.timeLimiterConfig(timeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(3)).build().build());
}
@豆子
@负载平衡
public WebClient.Builder WebClient(){
返回WebClient.builder();
}
问题就在这里

这里呢


由于您使用的是
WebClient
,因此需要使用
ReactiveCircuitBreakerFactory
ReactiveCircuitBreakerFactory

谢谢Ryan。当然可以。我配置了一个
ReactiveCircuitBreakerFactory
,但使用的是自动配置的
CircuitBreakerFactory