我有一个关于带Resilience4J(不仅仅是Resilience4J)的Spring Cloud断路器的快速问题。
这两个项目都非常棒。然而,目前,我们经常以撤退告终。这意味着,当第三方服务真的很好时,我们最终还是会选择后退。
这可能是我自己的问题,因此,我想问一个特定配置的问题。
我想告诉当前配置做以下操作:断路器。(我将使用好的,坏的,和一半好/一半坏的状态。
>
当状态是一半好/一半坏:一旦在一半好/坏,如果超过一半(可配置)的请求是成功的,把if回到良好状态。
状态为半好/半坏时:如果超过一半的请求仍然失败,则将其置于坏状态。
状态不好时:连续两次好请求后,把它放回一半好一半坏。
对于超时,请求应在4秒内应答。这是第三方给我们的SLA。除此之外,可能是出了什么问题。
对于每个失败的请求,重试3次(可配置)。
请问如何在SpringWebflux中实现这一点?
非常感谢。
这是不可能的:
状态不好时:连续两次好请求后,把它放回一半好一半坏。
断路器断开时,不允许任何呼叫。
如果使用resilience4j-spring-boot2
和resilience4j-reactor
,就可以轻松实现这一点。
publisher
.transform(TimeLimiterOperator.of(timeLimiter))
.transform(CircuitBreakerOperator.of(circuitBreaker))
.transform(RetryOperator.of(retry))
我们的Spring Boot starter允许您在外部配置文件中配置TimeLimiter、断路器和重试。甚至可以在方法上使用注释。无需手动添加Reactor操作员。
@TimeLimiter(name = "id")
@CircuitBreaker(name = "id")
@Retry(name = "id")
public Flux<String> fluxSuccess() {
return Flux.just("Hello", "World");
}
我们的Spring Boot starter增加了指标;)
见:https://resilience4j.readme.io/docs/getting-started-3
我想用Resilience4j来处理容错,我用的是断路器和定时器限制。 我想分离业务逻辑的容错行为,不要“弄脏”我的业务代码。 2-我如何有这个应用程序的许多实例,断路器为每个实例单独工作?我是对的?
断路器将处于闭合或半断开状态无限时间,直到达到最小的呼叫次数,对吗?有什么办法我可以设置什么时候没有调用在数量的时间,它将转为关闭状态?另外,在半开状态下,是否有可能使最小呼叫数大于允许的呼叫数?谢谢。
我正面临使用Spring Cloud Resilience 4j的断路器实现的问题。 在一些教程之后,我尝试在项目中添加必要的依赖项。此外,尝试添加配置,但电路仍然没有打开,并且没有调用回退方法。 对于用例,我正在从我的服务调用外部 API,如果该外部 API 关闭,那么在几次调用后,我需要启用断路器。 请从不同的文件中找到代码片段。 我是断路器模式的新手。我们将非常感谢您的帮助。 pom.xml
我可以看到,我可以使用以下代码以编程方式将状态设置为强制打开:CircuitBreaker强制打开状态 但是有没有一种方法可以设置一个属性,在应用程序启动时立即将状态设置为此,以便可以与测试一起使用呢?
我使用的是Resilience4J断路器,我需要忽略一些自定义异常,所以我需要更改默认配置。我在使用微服务,所以我有一个连接到数据库的微服务,它有一些基本的请求,比如get by id,我还有一个使用这些请求的边缘服务。例如,我需要,如果id不存在,微服务会抛出一个自定义异常,在这种情况下断路器不会打开。 数据库的微服务: 获取请求 > 服务 public SalesRepDTO getSales
根据入门指南(https://Resilience4j.readme.io/docs/get-started-3)和演示项目(https://github.com/Resilience4j/Resilience4j-spring-boot2-demo),我想自己测试它,创建一个更简单的测试应用程序。 代码如下: