OpenFeign的学习总结

news/2024/4/24 13:42:16/文章来源:https://blog.csdn.net/qq_28339335/article/details/136555189

1.Fegin调用只有在微服务之间才会使用,以前的单体项目用不到,因为单体项目不会涉及到分库的概念,并且单体项目就一个应用,想用的功能都可以直接方法调用,但是微服务就不行,跨服务的调用只能通过http的操作,这很像以前的单体项目不同产品之间的调用,或者前端与后端的调用。Fegin调用的实质还是http的调用。现在微服务之间调用如果还是写以前的http://ip:端口/访问路径,代码实现起来就会很麻烦,所以出现了Feign,底层做了HTTP的集成,让开发者省略了这其中的麻烦,开发更便捷

2.Feign使用少不了依赖,同时基于实际应用中一个应用会部署多台服务,所以引入fegin依赖的同时也要引入负载均衡的依赖,这个可以在自己机器上修改服务端口启动两个同应用服务玩一下,

依赖如下:

  <!--openFeign-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <!--负载均衡器-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  </dependency>

3.对于Fegin的使用,个人理解,在微服务中,可以单独抽取一个公共api模块单独放置所有的Fegin,这样的话,整体工程看起来会更明确更有具体指向性。我们其它服务只需要去引入这个模块就可以引用到,岂不是很方便。

4.Fegin接口的写法,feign既然是微服务之间的http调用,那么就像我们对外提供业务接口类似。在实际业务开发中,对外提供接口,调用方就要通过网关访问我们Controller层的@RequestMapping("/**")+@PostMapping("/**")才可以访问到我们的服务。所以,feign也是这个逻辑,我们在写fegin接口的时候也是采取这个原则。Fegin接口调用的时候我们一定要明确调用的是哪个服务,代码案例如下:

@FeignClient(value = "***-service")
public interface I***Client {

    @DeleteMapping("/**")

      //这一列的方法,和controller层调用的是一致的,不然怎么调用呢?
    void deleteCartItemByIds(@RequestParam("ids") Collection<Long> Ids);

}

5.Feign的使用,启动类是必须要添加注解使用的,@EnableFeignClients(basePackages = "com.***.client" ),但是这个注解加在哪个服务启动类上呢?原则是,那个应用调用Fegin哪个服务启动类加。

6.Fegin调用的时候是耗费资源的,就像每次发起http连接都是要进行sorcat链接一样,或者说像我们连接数据库,每次都建立连接都耗费资源,所以有数据库连接池。同样,fegin也有链接池,且,fegin的连接池很件到,只要在服务中引入依赖,配置文件假如配置就完成了,示例如下:

依赖:<!--OK http 的依赖 -->
<dependency>
  <groupId>io.github.openfeign</groupId>
  <artifactId>feign-okhttp</artifactId>
</dependency>

配置:

feign:
  okhttp:
    enabled: true # 开启OKHttp功能

6.Fegin使用的时候,在实际应用中,尤其是服务联调或者查询bug时,会像看下请求报文或者响应报文什么的,这个时候就需要有日志,我觉得可以用切面拦截的方式实现,这样可以控制全局的feign都打印日志出来,这个百度一大堆,随便抄一个就可以了。还有一种配置类的方式,可以实现fegin的日志级别,这个涉及到局部生效和全局生效的一个区别,全局生效的方式有点类似于切面拦截方式,这种方式就是在启动类上添加注解:

全局生效:操作在启动类的注入

@EnableFeignClients(defaultConfiguration = DefaultFeignConfig.class)

局部生效:只操作在当前的FeginClient

@FeignClient(value = "item-service", configuration = DefaultFeignConfig.class)

配置类:这个类做为Bean被spring容器自动装配

public class DefaultFeignConfig {
    @Bean
    public Logger.Level feignLogLevel(){
        return Logger.Level.FULL;        //日志级别
    }
}

7.Fegin日志的级别:

OpenFeign只会在FeignClient所在包的日志级别为DEBUG时,才会输出日志。而且其日志级别有4级:
- NONE:不记录任何日志信息,这是默认值。
- BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
- HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
- FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
Feign默认的日志级别就是NONE,所以默认我们看不到请求日志。

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

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

相关文章

医学大数据|统计基础|医学统计学(笔记):开学说明与目录

开始学习统计基础&#xff0c;参考教材&#xff1a;医学统计学第五版 点点关注一切来学习吧 责任编辑&#xff1a;医学大数据刘刘老师&#xff1a;头部医疗大数据公司医学科学部研究员 邮箱&#xff1a;897282268qq.com 久菜盒子工作室 我们是&#xff1a;985硕博/美国全奖…

Git 掌握

目录 一、前言 二、centos安装Git 三、Git基本操作 (1) 创建Git本地仓库 (2) 配置Git (3) 认识工作区&#xff0c;暂存区&#xff0c;版本库 四、添加文件 五、查看.git文件 六、修改文件 七、版本回退 八、撤销修改 (1) 场景一 对于还没有add的代码 (2) 场景二 已…

【Educoder数据挖掘实训】异常值检测-值域法

【Educoder数据挖掘实训】异常值检测-值域法 开挖&#xff01; 这个题中 l o f lof lof算法给的很抽象&#xff0c;先用比较通俗的方式说一下&#xff1a; 首要想法是找到不合群的点&#xff0c;也就是异常点。采用的方法是对局部可达密度进行判断。相较于其他普通的简单基于聚…

可以实现单个、两个、四个圆角的qml自定义控件

控件名: RadiusRectangle File: RadiusRectangle.qml import QtQuick 2.0Item {id: rootwidth: 100height: 100clip: trueproperty int itemRadius: 0property color itemColor: "red"property real itemOpacity: 1property int rightMargin: 0property int leftMar…

CubeMX使用教程(3)——GPIO

在第二章我们完成了点灯仪式&#xff0c;这次我准备尝试把按键和灯结合起来&#xff0c;做一次GPIO的综合测试 实验任务为&#xff1a;按下按键1&#xff08;B1&#xff09;&#xff0c;第1个灯&#xff08;LD1&#xff09;亮&#xff1b; 按下按键2&#xff08;B2&#xff09;…

【应用多元统计分析】--多元数据的描述和展示(R语言)

一元随机变量 我们用协方差来刻画两个变量的相关关系&#xff0c;这里指的是线性相关关系。 对于一元随机变量的可视化最简单的就是散点图&#xff0c;大致可以看出X和Y之间的相关关系。如果想更好的看X、Y之间的相关关系&#xff0c;可以画二维的散点图。 总结&#xff1a; 均…

重塑语言智能未来:掌握Transformer,驱动AI与NLP创新实战

Transformer模型 Transformer是自然语言理解(Natural Language Understanding&#xff0c;NLU)的游戏规则改变者&#xff0c;NLU 是自然语言处理(Natural Language Processing&#xff0c;NLP)的一个子集。NLU已成为全球数字经济中AI 的支柱之一。 Transformer 模型标志着AI 新…

基于AI软件平台 HEGERLS智能托盘四向车机器人物流仓储解决方案持续升级

随着各大中小型企业对仓储需求的日趋复杂&#xff0c;柔性、离散的物流子系统也不断涌现&#xff0c;各种多类型的智能移动机器人、自动化仓储装备大量陆续的应用于物流行业中&#xff0c;但仅仅依靠传统的物流技术和单点的智能化设备&#xff0c;已经无法更有效的应对这些挑战…

【数仓】Kafka消息可视化工具:Offset Explorer(原名kafka Tool)

Offset Explorer&#xff08;以前称为Kafka Tool&#xff09;是一个用于管理和使用Apache Kafka集群的GUI应用程序。 它提供了一个直观的界面&#xff0c;允许用户快速查看Kafka集群中的对象以及集群主题中存储的消息。 它包含面向开发人员和管理员的功能。 一些主要功能包括&a…

redis 性能优化二

前言 性能优化的第二篇文章&#xff0c;将重点讲一下Redis 的响应延迟&#xff0c;响应延迟如何对redis 进行优化。这个延迟不是说一个命令或者几个命令变慢了&#xff0c;延迟了几秒&#xff0c;就说Redis 变慢了。在不同的软硬件环境下&#xff0c;Redis 本身的绝对性能并不…

C++STL【priority_queue 优先级队列】

priority_queue 优先级队列 介绍 priority_queue&#xff0c;优先级队列&#xff0c;它的底层是个vector&#xff0c;在vector的基础上封装堆的算法&#xff0c;于是它摇身一变&#xff0c;成了一个存储在一块连续空间中的堆。 《什么是堆&#xff1f;》 堆是一棵完全二叉树&…

案例5 RPC调用请求规则链

您已将以下设备连接到ThingsBoard&#xff1a; Wind Direction Sensor. 风向传感器。Rotating System. 旋转系统。 also, you have one asset: 你还有一项资产 Wind Turbine. 风力涡轮机。 您要向旋转系统发起RPC请求&#xff0c;并根据风向更改风力涡轮机的方向。 https:/…

SQL 初级

SQL 初级 SQL 简介 SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;。 SQL 的范围包括数据插入、查询、更新和删除&#xff0c;数据库模式创建和修改&#xff0c;以及数据访问控制。 SQL 是什么&#xff1f; SQL…

从新能源汽车行业自动驾驶技术去看AI的发展未来趋势

自动驾驶汽车关键技术主要包括环境感知、精准定位、决策与规划、控制与执行、高精地图与车联网V2X以及自动驾驶汽车测试与验证技术等。 &#x1f413; 自动驾驶技术 这是AI在汽车行业中应用最广泛的领域之一。自动驾驶技术利用AI算法和传感器来感知环境、识别障碍物&#xff0c…

力扣大厂热门面试算法题 - 矩阵

解数独&#xff0c;单词搜索&#xff0c;被围绕的区域。每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.07 可通过leetcode所有测试用例。 目录 37. 解数独 解题思路 完整代码 Python Java 79. 单词搜索 解题思路 完整代码 Python…

多目标粒子群(MOPSO)算法原理及其MATLAB实现

粒子群算法(PSO)是Eberhart和Kennedy于1995年提出的一种模拟鸟类觅食行为的算法[1]&#xff0c;具有操作简单、速度快等特点。但在实际应用中&#xff0c;许多决策问题都是多目标优化问题&#xff0c;采用粒子群算法来处理多目标优化问题是一种有效方法&#xff0c;Coello 等人…

小型内衣裤洗衣机哪个牌子好?四款高热度内衣洗衣机力荐

相信很多用户从小就有个观念&#xff0c;内衣裤不能跟其他衣物一起混合洗&#xff0c;否则会感染细菌&#xff0c;所以不少人的内衣裤一直都是自己手洗的&#xff0c;清洗内衣裤不算麻烦&#xff0c;但日常都要换洗&#xff0c;对一个白天上班已经很累的人来说&#xff0c;真是…

Redis:java中redis的基本使用(springboot)

文章目录 springboot中使用redisspringboot 连接 redis三种方式导入依赖增删改查小练习 springboot中使用redis springboot 连接 redis三种方式 jedis &#xff08;redis官方提供的&#xff09;springboot自带的redisson (基于jedis优化的&#xff0c;性能最好&#xff0c;使…

MySQl基础入门③

上一遍内容 接下来我们都使用navicat软件来操作数据了。 1.新建数据库 先创建我门自己的一个数据库 鼠标右键点击bendi那个绿色海豚的图标&#xff0c;然后选择新建数据库。 数据库名按自己喜好的填&#xff0c;不要写中文&#xff0c; 在 MySQL 8.0 中&#xff0c;最优的字…

【管理咨询宝藏资料36】某知名咨询公司战略规划内部培训

【管理咨询宝藏资料36】某知名咨询公司战略规划内部培训 【关键词】战略规划、内部培训、管理咨询 【文件核心观点】 - 战略明晰框架思路&#xff1a;一棵大树五只苹果&#xff0c;通过战略定位图的核心性、层次性和浓缩性来保障战略明晰的有效性、直观性和可实施性。 - 企业战…