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