微服务远程调用openFeign简单回顾

目录

一. OpenFeign简介

二. OpenFeign原理

演示使用

provider模块

 消费者模块

 配置全局feign日志

示例源代码:


一. OpenFeign简介


OpenFeign是SpringCloud服务调用中间件,可以帮助代理服务API接口。并且可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

二. OpenFeign原理


添加@EnableFeignClients注解开启对@FeignClient注解的扫描加载处理。根据Feign Client的开发规范,定义接口并添加@FeiginClient注解

当程序启动之后,会进行包扫描,扫描所有@FeignClient注解的接口,并将这些信息注入到IOC容器中。当定义的Feign接口被调用时,通过JDK的代理的方式生成具体的RequestTemplate。Feign会为每个接口方法创建一个RequestTemplate对象。该对象封装了HTTP请求需要的所有信息,例如请求参数名、请求方法等信息。

然后由RequestTemplate生成Request,把Request交给Client去处理,这里的Client可以是JDK原生的URLConnection、HttpClient或Okhttp。最后Client被封装到LoadBalanceClient类,看这个类的名字既可以知道是结合Ribbon负载均衡发起服务之间的调用,因为在OpenFeign中默认是已经整合了Ribbon了。

演示使用

创建一个简单springcloud项目,有两个模块consumer(消费者)和provider(生产者)模块

两个模块都需要注册进nacos注册中心,也可以使用其他的注册中心比如Apollo或者Eureka等,这里演示使用nacos

注册配置naocs具体步骤不再演示,可以查看博主之前文章进行注册配置

引入openFeign依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency> 

provider模块

配置:

书写生产者测试接口:

 

 消费者模块

配置:

 启动两个模块查看是否注册进nacos中

 消费者主启动类中添加远程调用注解

 书写feign调用接口

控制层调用feign接口

 

 测试:

 

 配置全局feign日志

feign的调用日志需要单独进行配置,这样服务之间进行调用时才可以看到服务之间调用的日志信息

书写feign日志配置类

由于springboot默认日志级别是info, feign的debug日志级别就不会输出,所以还需要在配置中调整feign的debug级别打印

 重启测试:

查看控制台可以看到服务调用接口的信息:

 

示例源代码:

源代码
密码:h6kp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口漏洞-DVWS(XXE+鉴权)+阿里云KEY

dvws靶场 靶场&#xff1a;https://github.com/snoopysecurity/dvws-node 开启靶场&#xff0c;注册一个普通用户&#xff0c;登录成功 来到首页点击admin area 发现进入几秒钟之后又跳转回到首页&#xff0c;只有管理员admin用户才能进入。 点击admin area抓包&#xff0c;发现…

C# List 详解四

目录 18.FindLast(Predicate) 19.FindLastIndex(Int32, Int32, Predicate) 20.FindLastIndex(Int32, Predicate) 21.FindLastIndex(Predicate) 22.ForEach(Action) 23.GetEnumerator() 24.GetHashCode() 25.GetRange(Int32, Int32) C#…

实验二十四、滞回比较器电压传输特性的测量

一、题目 滞回比较器电压传输特性的测量。 二、仿真电路 电路如图1所示。 为便于观察电压传输特性的变化&#xff0c;输入信号采用信号发生器产生的幅值为 10 V 10\,\textrm V 10V、频率为 20 Hz 20\,\textrm{Hz} 20Hz 的三角波电压。采用虚拟的运算放大电路&#xff0c;其…

js中的数据结构之栈

js中的数据结构之栈 一、定义 栈是一种限定仅在表尾进行插入和删除操作的线性表&#xff0c;遵循后入先出的原则。 二、描述 栈是和列表类似的一种数据结构&#xff0c;也可以说栈就是一种特殊的列表。 栈里面的元素只能通过列表的一端访问&#xff0c;这一端称为栈顶。相…

树莓派 使用 docker安装showdoc

最近在使用showdoc时感觉挺方便的&#xff0c;但是在树莓派上拉取showdoc对应的镜像时特别慢&#xff0c;熬了一天半发现镜像倒在了最后一步&#xff0c;重试了好几次都没有拉去下来。后来仔细阅读了官网操作文档再加一点小运气今天成功给安装成功了。 showdoc的安装环境&…

Windows系统实现唤醒+合成+命令词智能语音交互

1、之前写过离线能力调用&#xff0c;今天来个终极版&#xff0c;实现智能交互或者结合大模型的智能交互示例&#xff0c;下面进入正题。上B站效果离线唤醒离线合成离线命令词实现智能交互_哔哩哔哩_bilibili 2、到讯飞开放平台下载唤醒合成命令词的离线组合包&#xff0c;找到…

【华为OD机试】按单词下标区间翻转文章内容【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。 例如输入字符串 “I am a developer.”,区间[0,3]则输出 “developer. a am I”。 输入描述: 使用换…

【趟坑记录】d3.zoom()的正确使用姿势 @d3.v7

【趟坑记录】d3.zoom()的正确使用姿势 d3.v7 文章目录 【趟坑记录】d3.zoom()的正确使用姿势 d3.v7问题重现原因分析解决方案放缩平移写法特殊修改transform函数的写法 总结 在开发一个D3应用的时候遇到了一个 zoom相关的问题&#xff0c;记录解决思路与方案 问题重现 最近在…

动态监控U盘重启容器

需求背景 Ubuntu机器需要动态根据插入的U盘进行导入数据, 路径是约定为U盘内的固定路径. 但是服务是docker服务, 插入U盘并不会直接挂在到容器内部, 需要重启容器才能生效, 每次手动重启很麻烦, 自动检测U盘路径变化来操作容器. 配置动态监控脚本和服务 编写脚本 vim moni…

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载 Windows 10 22H2 企业版 arm64 x64 请访问原文链接&#xff1a;https://sysin.org/blog/windows-10/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Window…

FPGA——verilog实现格雷码与二进制的转换

文章目录 一、格雷码简介二、二进制转格雷码三、格雷码转二进制四、仿真 一、格雷码简介 格雷码是一种循环二进制码或者叫作反射二进制码。跨时钟域会产生亚稳态问题&#xff08;CDC问题&#xff09;&#xff1a;从时钟域A过来的信号难以满足时钟域B中触发器的建立时间和保持时…

python实现远程服务器的操作

前言 测试过程中经常会遇到需要将本地的文件上传到远程服务器上&#xff0c;或者需要将服务器上的文件拉到本地就行操作&#xff0c;以前安静经常会用到xftp工具。今天介绍一种python库Paramiko&#xff0c;可以帮助我们通过代码的方式进行完成对远程服务器的上传和下载操作。…

MongoDB University课程M310 MongoDB Security 学习笔记

环境准备 此课程需要两台虚机。因此需要提前安装Vagrant和VirtualBox&#xff0c;这些我已经有了。因此只需要下载课程提供的Vagrant文件m310-vagrant-env.zip就可以了。 解压文件&#xff0c;进入目录&#xff0c;运行以下命令即可&#xff1a; $ cd m310-vagrant-env $ va…

elementui el-table 封装表格

ps: 1.3版本 案例&#xff1a; 完整代码&#xff1a; 可直接复制粘贴&#xff0c;但一定要全看完&#xff01; v-slot"scopeRows" 是vue3的写法&#xff1b; vue2是 slot-scope"scope" <template><!-- 简单表格、多层表头、页码、没有合并列行…

flutter开发实战-Stagger Animation实现水波纹动画

flutter开发实战-实现水波纹动画&#xff0c;使用到了交织动画&#xff0c;实现三个圆逐渐放大与渐变的过程。 一、效果图 二、实现水波纹效果 实现水波纹动画&#xff0c;使用到了交织动画&#xff0c;实现三个圆逐渐放大与渐变的过程。 交织动画 有些时候我们可能会需要一些…

线程系列 7 - JUC高并发容器类

线程系列 7 - JUC高并发容器类 1、JUC高并发容器1.1、为什么需要JUC高并发容器1.2、什么是 JUC 高并发容器1.3、CopyOnWriteArrayList1.4、BlockingQueue1.4.1、阻塞队列的常用方法1.4.2、ArrayBlockingQueue1.4.3、LinkedBlockingQueue1.4.4、DelayQueue1.4.5、PriorityBlocki…

TypeScript快速入门

文章目录 一、初识TypeScript1、安装TypeScript2、Hello TypeScript 二、结合项目---配置1、tsconfig.jsontsconfig.json 重要字段compilerOptions 每个选项的详细说明 2、ts-loader 三、语法1、基本类型2、类型注解3、函数4、接口5、类6、泛型 四、结合项目---vue3结合使用 一…

可观测之调用链Skywalking

简介 分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Docker、K8s、Mesos&#xff09;架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 多种监控手段。可以通过语言探针和 service mesh 获得监控…

HTTPS连接过程中的中间人攻击

HTTPS连接过程中的中间人攻击 HTTPS连接过程中间人劫持攻击 HTTPS连接过程 https协议就是httpssl/tls协议&#xff0c;如下图所示为其连接过程&#xff1a; HTTPS连接的整个工程如下&#xff1a; https请求&#xff1a;客户端向服务端发送https请求&#xff1b;生成公钥和私…

矩阵置零(力扣)思维 JAVA

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 输入&#xff1a;matrix [[0,1,2,0],[3,4,5,2],[…