【微服务】 OpenFeign

ops/2024/9/21 11:17:24/

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/ops/33352.html

相关文章

考研入门55问---基础知识篇

考研入门55问---基础知识篇 01 &#xff1e;什么是研究生入学考试&#xff1f; 研究生是指大专和本科之后的深造课程。以研究生为最高学历, 研究生毕业后&#xff0c;也可称研究生&#xff0c;含义为研究生学历的人。在中国大陆地区&#xff0c;普通民众一般也将硕士毕业生称…

mac通过termius连接Linux服务器

mac上安装 linux系统 如果有 linux服务器账号密码&#xff0c;那么上一步可忽略&#xff1b; 比如&#xff1a;直接连接阿里云或腾讯云账号 1. 安装termius 链接: https://pan.baidu.com/s/1iYsZPZThPizxqtkLPT89-Q?pwdbw6j 提取码: bw6j 官网 Termius - SSH platform for …

OpenHarmony实战开发-手势事件

手势表示由单个或多个事件识别的语义动作&#xff08;例如&#xff1a;点击、拖动和长按&#xff09;。一个完整的手势也可能由多个事件组成&#xff0c;对应手势的生命周期。支持的事件有&#xff1a; 触摸 touchstart&#xff1a;手指触摸动作开始。touchmove&#xff1a;手…

《Spring-MVC》系列文章目录

简介 Spring MVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;它通过把Model&#xff08;模型&#xff09;、View&#xff08;视图&#xff09;、Controller&#xff08;控制器&#xff09;分离&#xff0c;将web层进行职责解耦&#xff0c;把复杂…

笔记12-远程服务器上配置linux深度学习C++环境全过程记录(笔记1和2的同样环境第3次配置)

&#xff08;笔记1和2在windows上装的同样环境在远程服务器上配置&#xff09; 文章目录 conda create -n zgp_m3dm_main python3.8&#xff08;失败&#xff09;反向代理[笔记10-linux服务器可以通过SSH连接但是没法上网](https://editor.csdn.net/md/?articleId137644653)c…

【数据结构】链表专题2

前言 本篇博客继续探讨有关链表的专题&#xff0c;这片博客的题&#xff0c;提前打个预防针&#xff0c;有点意思哦&#xff0c;哈哈哈&#xff0c;话不多说&#xff0c;进入正文 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论…

C语言【文件操作】(1)

文章目录 1.为什么使用文件2.文件是什么&#xff1f;2.1程序文件2.2数据文件 3.二进制文件和文本文件4.文件的打开和关闭4.1流和标准流流标准流 4.2文件指针4.3文件的打开和关闭 结语 1.为什么使用文件 很简单 长久的存储数据 如果没有文件&#xff0c;我们写程序所产生的数据…

2.3Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-Vue进阶

Vue方法、计算属性及监听器 在vue中处理复杂的逻辑的时候&#xff0c;我们经常使用计算属性、方法及监听器。 methods&#xff1a;方法&#xff1a;它们是挂载在Vue对象上的函数&#xff0c;通常用于做事件处理函数&#xff0c;或自己封装的自定义函数。 computed&#xff1…