【微服务】 OpenFeign

embedded/2024/11/14 21:51:58/

OpenFeign

  • OpenFeign
    • OpenFeign的使用
    • 连接池
    • 日志

OpenFeign

OpenFeign是一个声明式的http客户端,是SpringCloud在Eureka公司开源的Feign基础上改造而来
地址: https://github.com/OpenFeign/feign

  • 作用:

基于SpringMVC的常见注解,简化RestTemplate的http请求的发送

OpenFeign的使用

  1. 引入依赖,包括OpenFeign和负载均衡的组件SpringCloudLoadBalancer
        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
  1. 通过注解 @EnableFeignClients启动OpenFeign功能,添加在启动类上
  2. 编写FeignClient
@FeignClient(value="服务名称")
public interface testClient{@GetMapper("/test")List<User> test(@RequestParam("id") Collection<Long> id);
}
  1. 使用FeignClient,实现远程调用
List<User> test = testclient.test(List.of(1,2,3));

连接池

OpenFeign的底层是使用Client发送请求的,Client每次发送请求需要不断地重复创建连接,我们可以该换底层发送请求的框架:
HttpURLConnection:默认实现,不支持连接池
Apache HttpClient:支持连接池
OKHttp:支持连接池

  • 该换OKHttp
  1. 引入依赖
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId>
</dependency>
  1. 开启连接池功能
feign:okhttp:enabled: true #开启连接池支持

配置完成之后底层就会改变为OKHttp来发送请求

日志

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

如果要更改默认的日志级别需要自定义日志级别的Bean

@Bean
public class test{@Beanpublic Logger.Level feignLogLevel(){return Logger.Level.Full;}
}

再将上述的Bean放在注解 @FeignClient中使其生效

@FeignClient(value="服务名称",configuration=test.Class)

不过这样只会对某个客户端有效,如果想进行全局的配置

@EnableFeignClients(defaultConfiguration=DefaultFeignConfig.calss)

注解放在启动类上就可以开启日志


http://www.ppmy.cn/embedded/33223.html

相关文章

ES的脑裂现象

目录 0 集群结点的职责1 什么是脑裂现象2 造成脑裂现象的原因2.1 网络问题&#xff08;最常见&#xff09;2.2 主节点负载过大&#xff0c;资源耗尽&#xff0c;别的结点ping不到主节点2.3 主节点JVM内存回收时间过长导致 3 脑裂现象的解决方案3.1 局域网部署3.2 角色分离&…

Qt服务器端与客户端交互

Qt做客户端与服务器端交互第一步引入network 第一步引入network后继续编程首先界面设计 创建server和socket 引入QTcpServer&#xff0c;QTcpSocket MainWindow.h代码如下 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTcpServer&…

潮玩宇宙大逃杀平台app

潮玩宇宙大逃杀平台功能介绍 潮玩宇宙大逃杀平台是一款独特且充满挑战的在线多人游戏平台&#xff0c;为玩家提供了一个充满奇幻与刺激的宇宙逃亡之旅。以下是该平台的主要功能介绍&#xff1a; 独特的游戏设定&#xff1a;潮玩宇宙大逃杀平台设定在一个庞大的宇宙中&#xf…

什么是日志审计系统?日志审计系统有什么用?

日志审计系统是一种关键的信息安全和网络管理工具&#xff0c;它通过收集、分析和存储计算机系统、网络和应用程序产生的日志信息来帮助组织监控其信息系统的安全状态&#xff0c;检测异常行为&#xff0c;以及遵守各种合规要求。这些系统对于维护系统的完整性和安全性、识别和…

如何在Dlib库中实现目标跟踪

dlib 库本身并不直接提供目标跟踪的功能。dlib 是一个包含机器学习算法的 C++ 工具包,其中包含如人脸检测、人脸关键点检测、形状预测等功能,但它没有内置的目标跟踪算法。 但是,你可以结合其他库或自己实现算法来在 dlib 的基础上进行目标跟踪。以下是一个大致的步骤,指导…

JavaEE初阶Day 15:文件IO(1)

目录 Day 15&#xff1a;文件IO&#xff08;1&#xff09;IO文件1. 路径2. 文件的分类3. 使用Java针对文件系统进行操作3.1 属性3.2 构造方法3.3 方法 Day 15&#xff1a;文件IO&#xff08;1&#xff09; IO I&#xff1a;Input输入 O&#xff1a;Output输出 输入输出规则…

Summary of Common Interview Questions of SpringMVC

1. What is Spring MVC? Briefly introduce your understanding of spring MVC? Spring MVC is a lightweight web framework based on Java that implements the request driven type of MVC design pattern. By separating Model, View and Controller, it decouples the …

零基础学习数据库SQL语句之查询表中数据的DQL语句

是用来查询数据库表的记录的语句 在SQL语句中占有90%以上 也是最为复杂的操作 最为繁琐的操作 DQL语句很重要很重要 初始化数据库和表 USE dduo;create table tb_emp(id int unsigned primary key auto_increment comment ID,username varchar(20) not null unique comment…