feign优化

本文最后更新于:10 个月前

1. Feign开启log

1
2
3
4
5
6
7
8
9
10
11
feign:
client:
config:
default: # default全局的配置
loggerLevel: BASIC # 日志级别,日志级别尽量用basic或none,因为会影响性能
logging: # 需要特别注意的是,client所在的包路径应该要配置好log级别,不然不会打印
level:
cn.kevinw: debug
client: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS

2. Feign切换其他请求框架

Feign底层发起http请求,依赖于其它的框架。其底层客户端实现包括:

  • URLConnection:默认实现,不支持连接池
  • Apache HttpClient :支持连接池
  • OKHttp:支持连接池

提高Feign的性能主要手段就是使用连接池代替默认的URLConnection。

  1. 引入依赖
    1
    2
    3
    4
    5
    <!--httpClient的依赖 -->
    <dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    </dependency>
  2. application.yml中添加配置
    1
    2
    3
    4
    5
    feign:
    httpclient:
    enabled: true # 开启feign对HttpClient的支持
    max-connections: 200 # 最大的连接数
    max-connections-per-route: 50 # 每个路径的最大连接数

3. 其他自定义配置

Feign可以支持很多的自定义配置,如下表所示:

类型 作用 说明
feign.Logger.Level 修改日志级别 包含四种不同的级别:NONE、BASIC、HEADERS、FULL
feign.codec.Decoder 响应结果的解析器 http远程调用的结果做解析,例如解析json字符串为java对象
feign.codec.Encoder 请求参数编码 将请求参数编码,便于通过http请求发送
feign.Contract 支持的注解格式 默认是SpringMVC的注解
feign.Retryer 失败重试机制 请求失败的重试机制,默认是没有,不过会使用Ribbon的重试

一般情况下,默认值就能满足我们使用,如果要自定义时,只需要创建自定义的@Bean覆盖默认Bean即可。


feign优化
http://kevinw-m.github.io/2023/07/25/技术博客/java/feign优化/
作者
Kevin Wu
发布于
2023年7月25日
更新于
2023年10月28日
许可协议