SpringCloud(九)Feign的使用及设置

Feign组件

@author QYX 

feign 作为一个声明式的 Http Client 开源项目。在微服务领域,相比于传统的 apache httpclient 与在 spring 中较为活跃的 RestTemplate 更面向服务化,更易于使用。底层封装了 Jersey 与 CXF 分别用于 REsT 与 SOAP 的服务(对应有 JAX-RS 与 JAX-WS  API),当然也可以配置换成其它类似的实现,比如 OkHttp 、Ribbon 或者 Apache HC 等。

feign 基本用法及注解的使用看官方文档

1 导入依赖

 <!--springboot整合的openfegin-->
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-openfeign</artifactId>
 </dependency>

2 配置接口

 package com.qqq.fegin;
 
 import com.qqq.entity.Product;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
 /**
  * @FeginClient
  * name:服务提供者的名称
  * 声明需要调用的微服务名称
  *
  */
 @FeignClient(name = "service-product")
 public interface ProductFeginClient {
     /**
      * 配置需要调用的微服务接口
      */
     @RequestMapping(value = "/product/{id}",method = RequestMethod.GET)
     public Product findById(@PathVariable("id") Long id)
    {
 
    }
 }

3 在启动类上激活Feign

 @SpringBootApplication
 @EntityScan("com.qqq.entity")
 @EnableFeignClients

4 通过自动的接口调用远程微服务

 @RestController
 @RequestMapping("/order")
 public class OrderController {
  @Autowired
     private ProductFeginClient productFeginClient;
  @RequestMapping(value = "/buy/{id}",method = RequestMethod.GET)
     public Product findById(@PathVariable("id") Long id)
    {
         Product product=null;
         product=productFeginClient.findById(id);
         return product;
    }
 }

feign默认使用的负载均衡算法和Ribbon一样都是轮询策略,我们可以通过配置Ribbon,可以通过ribbon.xxx来进行全局配置,也可以通过服务名.ribbon.xx来对指定

Feign的配置

connectTimeout:建立链接的超时时长

readTimeout:读取的超时时长

Feign组件的数据压缩

Spring Cloud Feign支持对请求和响应进行GZIP压缩,以减少通信过程中的性能损耗,通过下面的参数即可开启请求与响应的压缩功能

同时我们也可以对请求的数据类型,以及触发压缩的大小下限进行设置

上面的数据类型,压缩大小下限均是默认值

日志级别:

 fegin:
  client:
    config:
      service-product: #需要调用的服务名称
        loggingLevel: FULL  #日志配置四个选项:NONE(不输出日志,推荐使用) BASIC(适用于生产环境追踪问题) HEADERS:在BASIC的基础上,记录请求和响应头信息 FULL(记录所有)
 logging:
  level:
  com.qqq.ProductFeignClient: debug #需要打印日志的类

Feign执行原理

 

原文地址:https://www.cnblogs.com/qyx66/p/12301931.html