栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud之Feign的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud之Feign的使用

Feign是一个声明式的http客户端,其作用就是帮助我们优雅的实现http请求的发送,解决硬编码的代码可读性差、参数复杂URL难以维护的问题。

使用步骤

Fegin的使用步骤非常简单
1) pom文件当中引入feign的依赖
2) 在启动类添加注解@EnableFeignClients开启Feign的功能
3) 编写Feign的客户端

@FeignClient("userservice")
public interface UserClient {
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

该接口当中包含了如下信息:服务名称:userservice、请求方式:GET、请求路径:/user/{id}、请求参数:Long id、返回值类型:User,这样,Feign就可以帮助我们发送http请求

4) 调用
在需要发送该请求的地方,注入该接口,然后直接调用该方法即可

    @Autowired
    private UserClient userClient;

    public XXX XxxXxx(Xxx xxx) {
    	*****************
    	*****************
    	//直接调用
        User user = userClient.findById(id);
        *****************
        *****************
    }
使用优化

Feign底层客户端实现包括:

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

  • Apache HttpClient :支持连接池

  • OKHttp:支持连接池

因此可以使用HttpClient或者OKHttp代替默认的URLConnection来提高Feign的性能。
步骤也非常简单:
1) 引入依赖,feign-httpclient或者ok-http
2) 在配置文件中添加配置,配置连接池(以httpclient为例)

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

除了以上优化方法外,日志级别用basic也可以提高Feign的性能

feign:
  client:
    config:
      default: # default全局的配置
        loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息

日志的级别分为四种:

  • NONE:不记录任何日志信息,这是默认值。
  • BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
  • HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
  • FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
实际开发当中的使用

实际开发当中我们将Feign的XxxClient抽取为独立模块feign-api,并且把有关的POJO、默认的Feign配置都放到这个模块中,所有微服务引用该模块的依赖包,即可直接调用。

        
            cn.itcast.demo
            feign-api
            1.0
        

注意:
模块feign-api当中XxxClient所在的包名通常与服务消费者的@EnableFeignClients注解所在的包名(启动类所在的包)不一致,因此无法扫描到UserClient。
有两种方式解决:

方式一:

指定Feign应该扫描的包:

@EnableFeignClients(basePackages = "cn.itcast.feign.clients")

方式二:

指定需要加载的Client接口:

@EnableFeignClients(clients = {UserClient.class})
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号