您现在的位置是:首页 > 正文

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

2024-04-01 00:35:30阅读 2

场景

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

转载于:https://my.oschina.net/wuxinshui/blog/3058490

网站文章

  • 2.7 协程设计原理

    2.7 协程设计原理

    /协程的状态 typedef enum _co_status {CO_NEW , //新建 CO_READY , // 就绪 CO_WAIT , //等待 CO_SLEEP , //睡眠 CO_EXI...

    2024-04-01 00:35:05
  • 区块链基础

    区块链基础

    区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序链接起来的。它可以被存储为平面文件(flat file),或是存储在一个简单数据库中。比特币核心客户端使用Google 的LevelDB 数据库存储区块链元数据。区块被从远及近有序地链接在这个链条里,每个区块都指向前一个区块。区块链经常被视为一个垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在之前的区块之上...

    2024-04-01 00:34:56
  • create connection SQLException, url: jdbc:mysql:///account, errorCode 1045, state 28000

    create connection SQLException, url: jdbc:mysql:///account, errorCode 1045, state 28000 错误原因: 配置文件中 ...

    2024-04-01 00:34:50
  • 【React】Context

    【React】Context

    Context

    2024-04-01 00:34:44
  • 读书笔记:数据结构与算法分析(java语言描述)——引论

    读书笔记:数据结构与算法分析(java语言描述)——引论1.3 递归简述 递归的四条基本法则: 1. 基准情形 2. 不断推进 3. 设计法则 4. 合成效益法则 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序

    2024-04-01 00:34:16
  • 数的拆分(DFS的应用)

    数的拆分(DFS的应用)

    import java.util.Scanner;public class Main{ static int n,m,k,sum=0; static int []res=new int [100];//保存结果的数组 public static void main(String[] args) { Scanner scanner=new Scanner(Syste...

    2024-04-01 00:34:11
  • 在Windows下编译TouchVG

    在Windows下编译TouchVG

    为什么80%的码农都做不了架构师?>>> ...

    2024-04-01 00:34:04
  • mongoose中connect()、createConnection()和connection的区别和作用 热门推荐

    1 mongoose简介 2 mongoose连接数据的方法 2.1 connection 2.2 connect() 2.3 createConnection() 3 总结

    2024-04-01 00:33:35
  • JavaScriptMVC之数据处理

    常常,项目中创建,修改数据时,都会对前台提交的数据验证,转变。然后再提交给后台处理,这个步骤 是我们开发人员一定要完成的工作。在之前,我们在做数据验证或者转变时,都是把各种验证和数据转变都 写成各种函...

    2024-04-01 00:33:27
  • 万字长文:安全启动之SecureBoot启动吧(小白也能看懂!)

    安全引导(Secure Boot)功能是指在系统的整个启动过程中,使用链式验证电子签名的方式来验证系统中重要镜像文件的可靠性,然后再加载镜像文件的引导过程。安全引导功能可以保护二级厂商系统的独立性和完...

    2024-04-01 00:33:04