Feign-请求不同注册中心的服务


场景

需要通过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请求


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM