以编程方式创建的Feign客户和Eureka目标

问题描述 投票:0回答:1

我几天前开始学习微服务中的容错解决方案。我的生态系统中有一些微服务,现在它们已与Eureka服务查找互连。我使用FeignClient从一个呼叫到另一个。正如我听到和阅读的那样,Hystrix即将投入维护,我想知道是否可以在Feign中使用Resilience4J代替Hystrix。好吧,至少现在看来并非如此。我找到了一个很棒的Feign.Builder适配器,可以在FeignClient上方将resilience4j容错功能添加为装饰器(https://github.com/resilience4j/resilience4j/tree/master/resilience4j-feign),所以我想使用它。

因此,我使用了此功能,将功能加在一起,并将默认的编码器,解码器等项添加到伪装生成器中。事实证明,我必须使用.target调用来完成我的代码,这将创建我的客户代理,而我不能用Eureka很好地做到这一点:]

  1. 第一个构造函数,它采用类类型,并且URL是硬编码的,因此,如果我在此参数中添加一个eureka next服务器查询,则它只是其中一个实例的硬编码url,这不会实现负载平衡。某种解决方法可能是我创建了该客户端的prototype-scope或类似的短期作用域bean,并始终获得该调用的“下一个URL”。这增加了我在每个班级使用客户的负担。至少如我所见。也许我可以在原型周围添加某种单例助手bean,但是正如我所见,这也不是一个好的设计。

  2. 我以为我可以从Target接口创建一个EurekaTarget,但是当然,没有任何一种方法可以指示任何“生命周期结束”的事情,甚至没有apply方法。我认为也许这是在进行服务调用之前已被调用的一点,但是我看到有多次调用它,因此我必须更改所有调用的URL。

  3. 您知道进行此迁移的更好的解决方案吗?

我几天前开始学习微服务中的容错解决方案。我的生态系统中有一些微服务,现在它们已与Eureka服务查找互连。我用了...

java spring-cloud-feign resilience4j
1个回答
2
投票

我想您正在使用Spring Boot?Resilience4j的下一版本v1.0.0将支持@FeignClient批注。有一个PR添加了功能-> https://github.com/resilience4j/resilience4j/pull/579

© www.soinside.com 2019 - 2024. All rights reserved.