• Feign的简介及使用


    一、Feign简介

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

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

     二、使用Feign的步骤

    1.引入依赖

    1. <dependency>
    2. <groupId>org.springframework.cloudgroupId>
    3. <artifactId>spring-cloud-starter-openfeignartifactId>
    4. 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

    1. public class DefaultFeignConfiguration {
    2. @Bean
    3. public Logger.Level logLevel(){
    4. return Logger.Level.BASIC;
    5. }
    6. }

     四、Feign的性能优化

    Feign底层的客户端实现:

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

    优化Feign的性能主要包括:

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

    添加依赖

    1. <dependency>
    2. <groupId>io.github.openfeigngroupId>
    3. <artifactId>feign-httpclientartifactId>
    4. dependency>

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

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

  • 相关阅读:
    设计模式之门面模式
    媳妇面试了一家公司,期望月薪20K,对方没多问就答应了,只要求3天内到岗,可我总觉得哪里不对劲。
    《存储IO路径》专题:块设备层多队列blk-mq架构
    OFDM 十六讲 2- OFDM and the DFT
    js判断一个变量的数据类型
    1552. 两球之间的磁力-快速排序+二分查找
    MySQL实践——查看谁在持有锁
    MacOs 删除第三方软件
    mysql基础学习笔记
    java设计模式(七)适配器模式(Adapter Pattern)
  • 原文地址:https://blog.csdn.net/yueyue763184/article/details/127983391