真的有必要将 Hystrix 与反应式 spring boot 2 应用程序一起使用吗?

Is really necessary to use Hystrix with reactive spring boot 2 application?

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

我们在使用 Hystrix 时遇到了一些问题,特别是来自 "Javanica" 的注释不起作用,我们的开发人员需要改用来自 Spring-Cloud 的 HystrixCommands。事实上,Hystrix 显然会在 reactor 的线程池之外创建自己的线程池。

达到这一点,我的问题不是如何将 Hystrix 与 Spring Boot 2.0 一起使用,而是是否必须将来自我们微服务的所有外部调用包装在 HystrixCommand 中,或者是否仅使用 Reactor 方法(超时, onError, retry, etc.) 我们可以避免这种包装。

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

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

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