首页 > 解决方案 > 弹簧断路器 - Resilience4j - 如何配置?

问题描述

我有一个关于带有 Resilience4J(不是单独的 Resilience4J)的 Spring Cloud Circuit Breaker 的快速问题。

这两个项目都非常棒​​。然而,目前,我们过于频繁地以回退结束。这意味着,当 3rd 方服务实际上很好时,我们最终还是会选择回退。

这可能是我自己的问题,因此,我想针对特定配置提出问题。

我想告诉当前配置执行以下操作:断路器。(我将使用好、坏和半好/半坏的状态。

请问如何在 Spring Webflux 中实现这一点?

谢谢

标签: javaspring-cloudcircuit-breakerresilience4j

解决方案


这是不可能的:

当状态为坏时:连续两次好的请求后,将其恢复到一半好一半坏。

当断路器打开时,它不允许任何调用。

如果您使用resilience4j-spring-boot2和 , 您可以轻松实现这一点resilience4j-reactor

publisher
.transform(TimeLimiterOperator.of(timeLimiter))
.transform(CircuitBreakerOperator.of(circuitBreaker))
.transform(RetryOperator.of(retry))

我们的 Spring Boot 启动器允许您在外部配置文件中配置 TimeLimiter、CircuitBreaker 和 Retry。你甚至可以在你的方法上使用注解。无需手动添加 Reactor 操作符。

    @TimeLimiter(name = "id")
    @CircuitBreaker(name = "id")
    @Retry(name = "id")
    public Flux<String> fluxSuccess() {
        return Flux.just("Hello", "World");
    }

我们的 Spring Boot 启动器添加了指标;)

请参阅:https ://resilience4j.readme.io/docs/getting-started-3


推荐阅读