首页 > 解决方案 > 真的有必要将 Hystrix 与反应式 Spring Boot 2 应用程序一起使用吗?

问题描述

我在一个项目中工作,我们正在将我们的一些微服务从 Spring-MVC 转移到 Spring-Webflux 以测试反应范式。在 hystrix 的 github 存储库中寻求帮助,我们注意到该项目自一年前以来没有提交,并且它基于 RxJava,因此与 project-reactor 存在一些不兼容。

我们在使用 Hystrix 时遇到了一些问题,特别是“Javanica”中的注释不起作用,我们的开发人员需要使用 Spring-Cloud 中的 HystrixCommands。事实上,Hystrix 显然创建了自己的线程池,而不是反应堆的线程池。

到了这一点,我的问题不是如何在 Spring Boot 2.0 中使用 Hystrix,而是如果必须将来自我们微服务的所有外部调用包装在 HystrixCommand 中,或者如果只是使用 Reactor 方法(超时、onError、重试等),我们可以避免这种包装。

标签: springspring-bootspring-webfluxproject-reactorhystrix

解决方案


您可以用内置的 Reactor 方法(超时、重试、limitRate、onError ......)替换许多 hystrix 功能。

对于断路器,您可以使用Resilience4j。很容易将其嵌入到现有的 Reactor 代码中

Mono<MyClass> myMono = ...;
CircuitBreaker circuitBreaker = ...;
myMono.transform(CircuitBreakerOperator.of(circuitBreaker)).subscribe(...)

推荐阅读