Spring 断路器 - Resilience4j - 如何配置?

Spring Circuit Breaker - Resilience4j - how to configure?

我有一个关于 Spring 带有 Resilience4J 的云断路器(不仅仅是 Resilience4J)的快速问题。

这两个项目都很棒。然而,目前,我们过于频繁地以回退结束。这意味着,当第 3 方服务实际上没问题时,我们最终还是会进行回退。

这可能是我自己的问题,因此,我想问一个特定配置的问题。

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

请问如何在Spring Webflux中实现?

谢谢

这是不可能的:

When state is bad: After two consecutive good requests, put it back to half good half bad.

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

如果您使用 resilience4j-spring-boot2resilience4j-reactor,您可以轻松实现此目的。

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

我们的 Spring 引导启动器允许您在外部配置文件中配置 TimeLimiter、CircuitBreaker 和 Retry。您甚至可以只在您的方法上使用注释。无需手动添加 Reactor 运算符。

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

我们的 Spring 引导启动程序添加了指标 ;)

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