zoukankan      html  css  js  c++  java
  • OpenFeigin服务接口调用

    一、简介

    1、OpenFeign简介

    ​ Feign 是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。具有可插入注释支持,包括Feign注释和JAX-RS注释;支持可插拔式的编码器和解码器。Spring Cloud 对Feign进行了封装,使其支持了SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。官方文档地址:https://cloud.spring.io/spring-cloud-openfeign/reference/html/

    2、Feign 与OpenFeign 的区别

    • Feign 是SpringCloud组件中的一个轻量级RESTful的HTTP服务客户端,内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。Feign的使用方式:使用Feign的注解定义接口,调用这个接口就可以调用服务注册中心的服务。

      <dependency>
      	<groupId>org.springframework.cloud</groupId>
      	<artifactId>spring-cloud-starter-feign</artifactId>
      </dependency>
      
    • OpenFeign是SpringCloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

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

    二、OpenFeign使用步骤

    1、建立一个新模块,在pom文件中引入Feign的依赖

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

    2、在主启动类上加注解 @EnableFeignClients 开启Feign;

    3、在消费者端创建一个接口,接口中的方法是服务提供者中的方法;

    @Component
    //添加Feign注解,value=要寻找的微服务名称
    @FeignClient("CLOUD-PAYMENT-SERVICE")
    public interface PaymentFeignService {
        @GetMapping("/payment/get/{id}")
        CommonResult getPaymentById(@PathVariable("id") Long id);
    }
    

    4、定义自己的业务类,调用 Feign 接口中的方法即可,不用在手动的去引入RestTempLate。

    @Resource
    private PaymentFeignService paymentFeignService;
    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
        return paymentFeignService.getPaymentById(id);
    }
    

    三、OpenFeign超时控制

    1、描述

    ​ 消费者方与服务提供方之间对于服务的请求处理时间存在时间差,会超时导致程序报错。为解决这个问题,需要双方对于某些业务进行一些约定,保证程序正常运行。超时请求报错页面如下:

    2、超时设置,在消费端的application.yml添加以下配置。

    #设置feign客户端超时时间(OpenFeign默认支持Ribbon)
    ribbon:
      # 指的是建立连接后从服务器读取到可用资源所用的时间,单位ms
      ReadTimeout: 5000
      # 指的是建立连接所用的时间,适用于网络状态正常的情况下,两端连接所用的时间,单位ms
      ConnectTimeout: 5000
    

    四、OpenFeign 日志打印

    1、Feign 提供了日志打印功能,可以通过配置来调整日志级别,从而了解Feign中的Http请求的细节,对接口的调用情况进行监控和输出。

    2、日志级别

    • NONE:默认的,不显示任何日志;
    • BASIC:仅记录请求方法、URL、响应状态码及执行时间;
    • HEADERS:处了Basic中定义的信息之外,还有请求和响应的头信息;
    • FULL:处了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。

    3、配置方法

    • 定义一个配置类

      @Configuration
      public class FeignConfig {
      
          @Bean
          Logger.Level feignLoggerLevel(){
              return Logger.Level.FULL;
          }
      }
      
    • 修改yml文件

      logging:
        level:
          # feign日志以什么级别监控哪个接口
          com.xhanglog.springcloud.service.PaymentFeignService: debug
      

    案例代码地址:https://github.com/xhanglog/springcloud-learning

  • 相关阅读:
    SQL Server:创建索引视图
    Asp.Net常用函数
    SQL Server联机丛书:删除存储过程
    音乐知识全接触
    深入透析样式表滤镜
    有一天,爸妈会变老
    今天终于买到票啦~~
    今天,回到上海啦~~(附工作生涯回顾)
    十八问:怎么才是喜欢编程
    把旧光驱改CD播放机的方法
  • 原文地址:https://www.cnblogs.com/Mhang/p/12558299.html
Copyright © 2011-2022 走看看