Feign的简介及使用
一、Feign简介
Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign
其作用就是帮助我们优雅的实现http请求的发送,解决代码可读性差,编程体验不统一、参数复杂URL难以维护的问题。
二、使用Feign的步骤
1.引入依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.编写Feign客户端
主要是基于SpringMVC的注解来声明远程调用的信息,比如:
- 服务名称:userservice
- 请求方式:GET
- 请求路径:/user/{id}
- 请求参数:Long id
- 返回值类型:User
3. 在消费者启动类添加注解开启Feign的功能
4.在消费者服务中使用客户端
三、自定义Feign的配置
Feign运行自定义配置来覆盖默认配置,可以修改的配置如下:
类型 |
作用 |
说明 |
feign.Logger.Level |
修改日志级别 |
包含四种不同的级别:NONE、BASIC、HEADERS、FULL |
feign.codec.Decoder |
响应结果的解析器 |
http远程调用的结果做解析,例如解析json字符串为java对象 |
feign.codec.Encoder |
请求参数编码 |
将请求参数编码,便于通过http请求发送 |
feign. Contract |
支持的注解格式 |
默认是SpringMVC的注解 |
feign. Retryer |
失败重试机制 |
请求失败的重试机制,默认是没有,不过会使用Ribbon的重试 |
一般我们需要配置的就是日志级别。
配置Feign的日志文件一般有2种方式,选择其一即可
第一种是yaml配置方法
第二种是使用java代码方式,需要先声明一个Bean
public class DefaultFeignConfiguration {@Beanpublic Logger.Level logLevel(){return Logger.Level.BASIC;}
}
四、Feign的性能优化
Feign底层的客户端实现:
- URLConnection:默认实现,不支持连接池
- Apache HttpClient :支持连接池
- OKHttp:支持连接池
优化Feign的性能主要包括:
- 使用连接池代替默认的URLConnection
- 日志级别,最好用basic或none
添加依赖
<!--httpClient的依赖 -->
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId>
</dependency>
在消费者的yaml配置文件中添加连接池配置
feign:client:config:default: # default全局的配置loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息 httpclient:enabled: true # 开启feign对HttpClient的支持max-connections: 200 # 最大的连接数max-connections-per-route: 50 # 每个路径的最大连接数
Feign的简介及使用相关推荐
- 微服务调用组件Feign:简介以及搭建环境
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- Feign-1 Feign的简介及基础使用
讨论声明式的REST Client Feign7. Declarative REST Client: Feignhttps://cloud.spring.io/spring-cloud-netflix ...
- Feign(简介和使用)
1. Feign介绍 通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下 ...
- Feign api调用方式
Feign使用简介 基本用法 基本的使用如下所示,一个对于canonical Retrofit sample的适配. interface GitHub {// RequestLine注解声明请求方法和 ...
- Feign源码分析(without spring)
https://spring-cloud-wiki.readthedocs.io/zh_CN/latest/pages/feign.html 简介 Feign是一个声明式的Web Service客户端 ...
- springcloud之Feign超时问题(Read timed out executing POST http://***)
问题背景 最近公司项目有个功能需进行三层Feign调用,且还要调外部接口,延迟挺大,造成Feign一直提示Read timed out executing POST. feign.RetryableE ...
- P91--商品保存debug完成
1.坑:springcloud之Feign超时问题(Read timed out executing POST http://***) 解决方案 首先,我们看下Feign的简介 Feign 是一个声明 ...
- springcloud 熔断不生效_深入理解SpringCloud与微服务构建
目录 一.SpringCloud微服务技术简介 二.开发框架SpringBoot 三.服务注册和发现Ereka 四.负载均衡 五.申明式调用 六.熔断器 七.路由网关 八.配置中心 九.服务链路追踪 ...
- 记微服务架构实战学习笔记
架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图) 高可用 LVS+keepalive 1.单体应用:开发速度慢启动时间长依赖庞大等等 ...
最新文章
- pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值)、如果多于一列返回dataframe、size函数返回分组下的行数结果为Series(缺失值不敏感)
- Fedora开启FTP服务
- 【杂谈】追着光、靠近光、成为光、散发光
- ITK:图像的拉普拉斯算子
- DataList控件中使用Xml数据源
- String类两种实例化方式的区别
- android 设置-关于手机-连续点击版本 打开开发者模式的功能实现
- 春节假期,把“电影院”搬回家,泰捷WEBOX T1S 投影仪全面评测
- AVI视频文件损坏修复
- SSL基础:11:使用req子命令创建自签名证书
- 城市天际线伊甸园39W人口存档
- 记一次机房断电办公室网络瘫痪的恢复经过
- 对反游戏外挂技术的思考及实现
- 正则表达式匹配从指定字符开始到指定字符结束的字符串
- 计算机网络 FDM TDM
- 什么是内部类?内部类的作用
- 矩阵的Jordan分解实例
- QQ会员抽奖系统引流源码_适合引流,营销,推广
- IBM Thinkpad 笔记本型号保修全揭秘(这个全点)
- 什么是ECMAScript?
热门文章
- 示波器查看汽车电子燃油泵信号分析
- hdu5945 Fxx and game
- ftp服务器/客户端程序
- 乐鑫esp8266学习rtos3.0笔记第7篇:我又来了,基于rtos3.0版本 SDK编程 SPI 驱动 ws2812b 七彩灯,代码全部开源奉献给你们!
- Delphi字符串扫盲
- 数学分析:L‘Hospital 法则
- 【Python】Python实现简易中国象棋(非客户端)
- 虚拟机中Ubuntu开机时Gave up waiting for root...
- 微信公众号客服系统消息能即时提醒吗?
- 万能密码 #39;or#39;#39;=#39;