http客户端Feign

发布时间:2024年01月01日

一、简介

Feign是Spring Cloud中的一个HTTP客户端,它提供了一种简洁的方式来发送HTTP请求。Feign基于Java 8的函数式编程风格,使得代码更加简洁易读。Feign支持多种HTTP方法(GET、POST、PUT、DELETE等),还支持查询参数、URL模板、请求头、请求体(JSON或FORM)等功能。Feign还支持错误处理和响应解耦,使得代码更加灵活。使用Feign可以轻松地发送HTTP请求到远程服务,而不需要编写大量的重复代码。

二、Feign替代RestTemplate

使用Feign的步骤:

1、引入依赖
        <!--    Feign客户端    -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

?

?

2、在启动类添加注解开启Feign的功能
@EnableFeignClients

?

?

3、编写Feign客户端

?在Service注入并调用 ,将id 传入后就会通过服务名称携带参数发送请求

?

总结:

Feign的使用步骤:

  1. ?引入依赖
  2. ?添加@EnableFeignClients注解
  3. 编写FeignClient接口
  4. 使用FeignClient中定义的方法代替RestTemplate

三、Feign自定义配置

?

方式一:配置文件方式?

在yml文件中配置:(全局)

feign:
  client:
    config:
      default:
        logger-level: FULL

在yml文件中配置:(局部)

feign:
  client:
    config:
      userservice:  #更换为自己的服务名称
        logger-level: FULL

方式二:配置文件方式

新建一个配置类

?

四、Feign性能优化

Feign底层的客户端实现:

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

因此优化Feign的性能主要包括:

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

性能优化步骤:

        <!--        引入Httpclient依赖-->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>

?

?yml文件

feign:
  httpclient:
    enabled: true # 开启feign的httpclient
    max-connections: 200 # 最大连接数
    max-connections-per-route: 50 # 每个路由最大连接数

?

五、实现Feign最佳实践

?

文章来源:https://blog.csdn.net/m0_72803119/article/details/135324258
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。