一、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底层的客户端实现:

  1. URLConnection:默认实现,不支持连接池
  2. Apache HttpClient :支持连接池
  3. 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的简介及使用相关推荐

  1. 微服务调用组件Feign:简介以及搭建环境

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  2. Feign-1 Feign的简介及基础使用

    讨论声明式的REST Client Feign7. Declarative REST Client: Feignhttps://cloud.spring.io/spring-cloud-netflix ...

  3. Feign(简介和使用)

    1. Feign介绍 通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下 ...

  4. Feign api调用方式

    Feign使用简介 基本用法 基本的使用如下所示,一个对于canonical Retrofit sample的适配. interface GitHub {// RequestLine注解声明请求方法和 ...

  5. Feign源码分析(without spring)

    https://spring-cloud-wiki.readthedocs.io/zh_CN/latest/pages/feign.html 简介 Feign是一个声明式的Web Service客户端 ...

  6. springcloud之Feign超时问题(Read timed out executing POST http://***)

    问题背景 最近公司项目有个功能需进行三层Feign调用,且还要调外部接口,延迟挺大,造成Feign一直提示Read timed out executing POST. feign.RetryableE ...

  7. P91--商品保存debug完成

    1.坑:springcloud之Feign超时问题(Read timed out executing POST http://***) 解决方案 首先,我们看下Feign的简介 Feign 是一个声明 ...

  8. springcloud 熔断不生效_深入理解SpringCloud与微服务构建

    目录 一.SpringCloud微服务技术简介 二.开发框架SpringBoot 三.服务注册和发现Ereka 四.负载均衡 五.申明式调用 六.熔断器 七.路由网关 八.配置中心 九.服务链路追踪 ...

  9. 记微服务架构实战学习笔记

    架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图) 高可用 LVS+keepalive 1.单体应用:开发速度慢启动时间长依赖庞大等等 ...

最新文章

  1. pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值)、如果多于一列返回dataframe、size函数返回分组下的行数结果为Series(缺失值不敏感)
  2. Fedora开启FTP服务
  3. 【杂谈】追着光、靠近光、成为光、散发光
  4. ITK:图像的拉普拉斯算子
  5. DataList控件中使用Xml数据源
  6. String类两种实例化方式的区别
  7. android 设置-关于手机-连续点击版本 打开开发者模式的功能实现
  8. 春节假期,把“电影院”搬回家,泰捷WEBOX T1S 投影仪全面评测
  9. AVI视频文件损坏修复
  10. SSL基础:11:使用req子命令创建自签名证书
  11. 城市天际线伊甸园39W人口存档
  12. 记一次机房断电办公室网络瘫痪的恢复经过
  13. 对反游戏外挂技术的思考及实现
  14. 正则表达式匹配从指定字符开始到指定字符结束的字符串
  15. 计算机网络 FDM TDM
  16. 什么是内部类?内部类的作用
  17. 矩阵的Jordan分解实例
  18. QQ会员抽奖系统引流源码_适合引流,营销,推广
  19. IBM Thinkpad 笔记本型号保修全揭秘(这个全点)
  20. 什么是ECMAScript?

热门文章

  1. 示波器查看汽车电子燃油泵信号分析
  2. hdu5945 Fxx and game
  3. ftp服务器/客户端程序
  4. 乐鑫esp8266学习rtos3.0笔记第7篇:我又来了,基于rtos3.0版本 SDK编程 SPI 驱动 ws2812b 七彩灯,代码全部开源奉献给你们!
  5. Delphi字符串扫盲
  6. 数学分析:L‘Hospital 法则
  7. 【Python】Python实现简易中国象棋(非客户端)
  8. 虚拟机中Ubuntu开机时Gave up waiting for root...
  9. 微信公众号客服系统消息能即时提醒吗?
  10. 万能密码 #39;or#39;#39;=#39;