作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想问一个关于两种技术的问题。
我们首先从一个必须调用其他第三方 rest API 的应用程序开始,因此,我们在 SpringBoot Webflux 项目中使用了 Webflux WebClient。到目前为止一切顺利,我们有一个成功的应用程序有一段时间了。
然后第三方应用程序(不是我们的)开始变得不稳定,有时会无法满足我们的请求。我们必须实现某种重试逻辑。执行重试逻辑后,如WebClient重试,业务流程正常。
我们主要是直接从框架中提取逻辑。例如,最近 SpringOne 上@simon-baslé、Cancel、Retry 和 Timeouts 的演讲给出了许多工作示例。
.retryWhen(backoff(5, Duration.ofMillis(10).maxbackOff(Duration.ofSeconds(1)).jitter(0.4)).timeout(Duration.ofSeconds(5)
另一方面,最近有越来越多的应用程序转向断路器模式。由 Resilience4J 支持的 Spring Cloud Circuit Breaker 项目是使用 Resilience4J 实现断路器、Bulkhead 和重试等模式的流行实现。
最佳答案
我们(Resilience4j 团队)已经为 CircuitBreaker、Retry 和 Timeout 实现了自定义的 Spring Reactor 操作符。内部重试和超时使用来自 Spring Reactor 的运算符,但 Resilience4j 在其之上添加了功能:
@CircuitBreaker(name = BACKEND)
@RateLimiter(name = BACKEND)
@Retry(name = BACKEND)
@TimeLimiter(name = BACKEND, fallbackMethod = "fallback")
public Mono<String> method(String param1) {
return ...
}
private Mono<String> fallback(String param1, TimeoutException ex) {
return ...;
}
请注意,我们正在提供我们自己的 Spring Boot 启动器。我不是在谈论 Spring Cloud CircuitBreaker 项目。
关于spring-webflux - Webflux WebClient 重试与 Spring Cloud 断路器 Resilience4J 重试模式走进一个吧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64051144/
我在 NodeJS 中的多台计算机上的服务器端服务中使用 Resilient。 弹性客户端调用的 API 之一受到速率限制。受到速率限制的请求会在响应中收到特定的 header /值,因此很容易判断何
我是一名优秀的程序员,十分优秀!