真的有必要将 Hystrix 与反应式 Spring Boot 2 应用程序一起使用吗?
Posted
技术标签:
【中文标题】真的有必要将 Hystrix 与反应式 Spring Boot 2 应用程序一起使用吗?【英文标题】:Is really necessary to use Hystrix with reactive spring boot 2 application? 【发布时间】:2019-04-16 08:51:54 【问题描述】:我在一个项目中工作,我们正在将我们的一些微服务从 Spring-MVC 转移到 Spring-Webflux 以测试反应式范式。在 hystrix 的 github 存储库中寻求帮助,我们注意到该项目自一年前以来没有任何提交,并且它基于 RxJava,因此与 project-reactor 存在一些不兼容。
我们在使用 Hystrix 时遇到了一些问题,特别是“Javanica”中的注释不起作用,我们的开发人员需要使用 Spring-Cloud 中的 HystrixCommands。事实上,Hystrix 显然会创建自己的线程池,而不是 reactor 的线程池。
到了这一点,我的问题不是如何在 Spring Boot 2.0 中使用 Hystrix,而是如果必须将来自我们微服务的所有外部调用包装在 HystrixCommand 中,或者仅使用 Reactor 方法(超时、onError、重试等) .) 我们可以避免这种包装。
【问题讨论】:
【参考方案1】:您可以用内置的 Reactor 方法(超时、重试、limitRate、onError...)替换许多 hystrix 功能。
对于断路器,您可以使用Resilience4j。很容易将其嵌入到现有的 Reactor 代码中
Mono<MyClass> myMono = ...;
CircuitBreaker circuitBreaker = ...;
myMono.transform(CircuitBreakerOperator.of(circuitBreaker)).subscribe(...)
【讨论】:
以上是关于真的有必要将 Hystrix 与反应式 Spring Boot 2 应用程序一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章