【微服务】 OpenFeign

OpenFeign

OpenFeign是一个声明式的http客户端,是SpringCloud在Eureka公司开源的Feign基础上改造而来
地址: https://github.com/OpenFeign/feign

  • 作用:

基于SpringMVC的常见注解,简化RestTemplate的http请求的发送

OpenFeign的使用

  1. 引入依赖,包括OpenFeign和负载均衡的组件SpringCloudLoadBalancer
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
  1. 通过注解 @EnableFeignClients启动OpenFeign功能,添加在启动类上
  2. 编写FeignClient
@FeignClient(value="服务名称")
public interface testClient{
     @GetMapper("/test")
     List<User> test(@RequestParam("id") Collection<Long> id);
}
  1. 使用FeignClient,实现远程调用
List<User> test = testclient.test(List.of(1,2,3));

连接池

OpenFeign的底层是使用Client发送请求的,Client每次发送请求需要不断地重复创建连接,我们可以该换底层发送请求的框架:
HttpURLConnection:默认实现,不支持连接池
Apache HttpClient:支持连接池
OKHttp:支持连接池

  • 该换OKHttp
  1. 引入依赖
<dependency>
   <groupId>io.github.openfeign</groupId>
   <artifactId>feign-okhttp</artifactId>
</dependency>
  1. 开启连接池功能
feign:
  okhttp:
     enabled: true #开启连接池支持

配置完成之后底层就会改变为OKHttp来发送请求

日志

OpenFeign只会在FeignClient所在的包的日志级别为DEBUG时,才会输出日志,而且日志级别由四级:
NONE:不记录任何日志信息,还是默认值
BASIC:仅记录请求的方式,URL以及响应状态码和执行时间
HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
FULL:记录所有请求和响应的明细,包括头信息,请求体,元数据
由于Feign默认的日志级别就是NONE,所以默认我们看不到请求日志

如果要更改默认的日志级别需要自定义日志级别的Bean

@Bean
public class test{
  @Bean
  public Logger.Level feignLogLevel(){
     return Logger.Level.Full;
  }
}

再将上述的Bean放在注解 @FeignClient中使其生效

@FeignClient(value="服务名称",configuration=test.Class)

不过这样只会对某个客户端有效,如果想进行全局的配置

@EnableFeignClients(defaultConfiguration=DefaultFeignConfig.calss)

注解放在启动类上就可以开启日志

相关推荐

  1. 服务OpenFeign

    2024-05-04 23:14:03       8 阅读
  2. 02-OpenFeign-服务接入

    2024-05-04 23:14:03       30 阅读
  3. 第五章 : Spring cloud 服务调用-OpenFeign

    2024-05-04 23:14:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-04 23:14:03       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-04 23:14:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-04 23:14:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-04 23:14:03       18 阅读

热门阅读

  1. 数据结构===队列

    2024-05-04 23:14:03       7 阅读
  2. C# 常见的数据结构如何在CRUD时选择

    2024-05-04 23:14:03       8 阅读
  3. 孩子如何学好python

    2024-05-04 23:14:03       11 阅读
  4. 优先队列讲解

    2024-05-04 23:14:03       7 阅读
  5. C++项目(通讯录管理系统)

    2024-05-04 23:14:03       6 阅读
  6. 字节流与字符流的区别

    2024-05-04 23:14:03       8 阅读
  7. 详解AI绘画原理

    2024-05-04 23:14:03       6 阅读
  8. C++11:lambda表达式及function包装器

    2024-05-04 23:14:03       5 阅读
  9. 三维风格迁移

    2024-05-04 23:14:03       6 阅读
  10. SpringBoot对接口配置跨域设置

    2024-05-04 23:14:03       10 阅读
  11. 【Python 类基础介绍】

    2024-05-04 23:14:03       7 阅读
  12. Spring Bean lifecycle

    2024-05-04 23:14:03       8 阅读