Feign的简介及使用

一、Feign简介

Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign

Feign的简介及使用_第1张图片

其作用就是帮助我们优雅的实现http请求的发送,解决代码可读性差,编程体验不统一、参数复杂URL难以维护的问题。

 二、使用Feign的步骤

1.引入依赖


    org.springframework.cloud
    spring-cloud-starter-openfeign 

2.编写Feign客户端

Feign的简介及使用_第2张图片

 主要是基于SpringMVC的注解来声明远程调用的信息,比如:

  • 服务名称:userservice
  • 请求方式:GET
  • 请求路径:/user/{id}
  • 请求参数:Long id
  • 返回值类型:User

 3. 在消费者启动类添加注解开启Feign的功能

Feign的简介及使用_第3张图片

4.在消费者服务中使用客户端

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配置方法

Feign的简介及使用_第5张图片

 第二种是使用java代码方式,需要先声明一个Bean

public class DefaultFeignConfiguration {
    @Bean
    public Logger.Level logLevel(){
        return Logger.Level.BASIC;
    }
}

Feign的简介及使用_第6张图片

 四、Feign的性能优化

Feign底层的客户端实现:

  1. URLConnection:默认实现,不支持连接池
  2. Apache HttpClient :支持连接池
  3. OKHttp:支持连接池

优化Feign的性能主要包括:

  • 使用连接池代替默认的URLConnection
  • 日志级别,最好用basic或none

添加依赖



    io.github.openfeign
    feign-httpclient

在消费者的yaml配置文件中添加连接池配置

feign:
  client:
    config:
      default: # default全局的配置
        loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息 
  httpclient:
    enabled: true # 开启feign对HttpClient的支持
    max-connections: 200 # 最大的连接数
    max-connections-per-route: 50 # 每个路径的最大连接数

你可能感兴趣的:(java,Feign)