场景
需要通过Feign Client请求,其他注册中心或者其他Restful服务。
临时方案
Feign 请求转为RestTemplate http请求。
优点:能适应,feign环境和非feign环境
缺点:需要提供两套代码。一套spi,支持feign,一套SDK,支持http。
解决方案
FeignClient 使用url配置,使用placeHolder,注入url的值
方案验证
场景还原,搭建以下环境
- 注册中心1:
eureka1 - 注册中心2:
eureka2 - 服务提供者1:
provider1,注册到eureka1 - 服务提供者2:
provider2,注册到eureka2 - 服务消费者:
consumer1&2,注册到eureka1
Eureka1&Provider1


Eureka2&Provider2


Eureka1&Consumer



验证
浏览器请求consumer

provider1

provider2

源码分析
在应用启动的时候,会初始化FeignClient接口。
根据url,是否有值,创建负载均衡客户端。
Provider1,创建LoadBalancerFeignClient


Provider2,不创建LoadBalancerFeignClient


consumer发起请求的时候,provider1通过 LoadBalancerFeignClient 获取可用的服务提供者。


provider2,跳过LoadBalancerFeignClient ,直接发起request请求

浙公网安备 33010602011771号