• 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执行原理

     

  • 相关阅读:
    HDU 六度分离
    HDU 找到唯一的冠军
    最短路径问题
    (拓扑排序)确定比赛名次
    Shortest Prefixes
    2768: [JLOI2010]冠军调查( 最小割 )
    BZOJ 1927: [Sdoi2010]星际竞速(最小费用最大流)
    BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)
    BZOJ 2424: [HAOI2010]订货(最小费用最大流)
    BZOJ 1191: [HNOI2006]超级英雄Hero(二分图匹配)
  • 原文地址:https://www.cnblogs.com/qyx66/p/12301931.html
Copyright © 2020-2023  润新知