我正在一个项目中,我们正在将一些微服务从Spring-MVC迁移到Spring- Webflux,以测试反应性范例。在hystrix的github存储库中寻求帮助时,我们注意到该项目自一年前以来就没有提交,并且它基于RxJava,因此与project- reactor存在一些不兼容性。
我们在使用Hystrix时遇到了一些问题,特别是来自“ Javanica”的注释不起作用,并且我们的开发人员需要改用Spring- Cloud的HystrixCommands。Hystrix显然会在反应堆之外创建自己的线程池。
达到这一点,我的问题不是如何在Spring Boot 2.0中使用Hystrix,而是是否必须将来自微服务的所有外部调用包装在HystrixCommand中,或者是否仅使用Reactor方法(超时,onError,重试等),可以避免这种包裹。
您可以用内置的Reactor方法替换许多hystrix功能(超时,重试,limitRate,onError …)。
对于断路器,您可以使用Resilience4j。很容易将其嵌入到现有的Reactor代码中
Mono<MyClass> myMono = ...; CircuitBreaker circuitBreaker = ...; myMono.transform(CircuitBreakerOperator.of(circuitBreaker)).subscribe(...)