openFeign 组件

183 阅读2分钟

@FeignClient

该注解用于通知 OpenFeign 组件对 @RequestMapping 注解下的接口进行解析,并通过动态代理的方式产生实现类,实现负载均衡和服务调用。

@EnableFeignClients

该注解用于开启 OpenFeign 功能,当 Spring Cloud 应用启动时,OpenFeign 会扫描标有 @FeignClient 注解的接口,生成代理并注册到 Spring 容器中。

简单的feign开发

在消费模块依赖引入

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

消费模块启动类加入@EnableFeignClients,开启OpenFeign功能

@SpringBootApplication
@EnableFeignClients
public class CommunityOrgStarterApplication {
    public static void main(String[] args) {
        SpringApplication.run(CommunityOrgStarterApplication.class,args);
    }

消费模块新增feign接口模块

@Component
@FeignClient(value = "base-model")
public interface BaseApiService {
    // 对应base-model的接口
    @GetMapping("/baseUser/selectId")
    BaseUser selectId(@RequestParam Map<String,Object> params);

}

消费模块新增接feign接口调用类

@RequestMapping("/baseUser")
@RestController
public class BaseUserController {

    @Resource
    private BaseApiService baseApiService;
    
    @GetMapping("/selectId")
    public BaseUser selectId(@RequestParam Map<String,Object> params) {
       return baseApiService.selectId(params);
    }

}

OpenFeign 超时控制(两种都可)


# 请求处理的超时时间
ReadTimeout:  10000
# 请求连接的超时时间 默认的时间为 1 秒
 ConnectTimeout: 10000

feign:
  client:
    config:
      base-model:
        readTimeout:  10000
        connectTimeout: 10000

OpenFeign 日志增强

OpenFeign 提供了日志打印功能,可以通过配置调整日志级别

  1. 加入配置
logging:
  level:
    #feign 日志以什么样的级别监控该接口
    net.biancheng.c.service.DeptFeignService: debug

以上配置说明如下:

  • net.biancheng.c.service.DeptFeignService 是开启 @FeignClient 注解的接口(即服务绑定接口)的完整类名。也可以只配置部分路径,表示监控该路径下的所有服务绑定接口
  1. 创建一个名为 ConfigBean 的配置类
  @Configuration
  public class ConfigBean {
      /**
      * OpenFeign 日志增强
      * 配置 OpenFeign 记录哪些内容
      */
      @Bean
      Logger.Level feginLoggerLevel() {
      return Logger.Level.FULL;
      }
}

该配置的作用是通过配置的 Logger.Level 对象告诉 OpenFeign 记录哪些日志内容。
Logger.Level 的具体级别如下:

  • NONE:不记录任何信息。
  • BASIC:仅记录请求方法、URL 以及响应状态码和执行时间。
  • HEADERS:除了记录 BASIC 级别的信息外,还会记录请求和响应的头信息。
  • FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据等等。

feign对压缩的支持

feign:
  client:
    config:
      base-model:
        readTimeout: 10000
        connectTimeout: 10000
  compression:
    request:
      # 支持请求类型
      mime-types: text/xml,application/xml,application/json
      # 最小请求
      min-request-size: 2048
      # 启动请求压缩功能
      enabled: true
    response:
      # 启动响应压缩功能
      enabled: true