微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!

文章目录

    • 1、OpenFeign概述
    • 2、导入依赖
    • 3、OpenFeign服务调用
    • 4、OpenFeign超时控制
    • 5、OpenFeign日志增强

本文源码已由 GitHub https://github.com/2335119327/SpringCloud 已经收录(内涵更多SpringCloud的Demo,有兴趣的小伙伴可以看看),之后会持续更新SpringBoot系列,欢迎Star


1、OpenFeign概述

       Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,并支持使用Spring MVC默认注解和HttpMessageConverters。Feign可以和eEureka和Ribbon组合使用以支持负载均衡。

官方文档

Spring Cloud中文文档

Feign和OpenFeign比较
微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第1张图片

OppenFeign集成了Ribbon,利用Ribbon维护了Payment服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过feign只需要定义服务绑定接口且声明式的方法,优雅而简单的实现了服务调用。


2、导入依赖


<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-openfeignartifactId>
    <version>2.2.1.RELEASEversion>
dependency>

3、OpenFeign服务调用

哪个微服务模块想要进行远程调用,那必须先在该微服务主启动类添加@EnableFeignClients注解

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第2张图片
目标微服务模块业务类

注意要使用@RestController
找到需要调用的方法进行复制(不需要方法体)

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第3张图片

PaymentFeignService

在需要进行调用的微服务模块下建立调用接口(注意加上@FeignClient注解,value值为在注册中心的值即配置文件中spring.application.name的值)

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第4张图片
在这里插入图片描述

controller
微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第5张图片

远程调用成功

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第6张图片


4、OpenFeign超时控制

在需要调用的方法里面休眠3秒

@GetMapping(value = "/payment/feign/timeout")
public String paymentFeignTimeout() {
    try {
    	//睡眠3秒
        TimeUnit.SECONDS.sleep(3);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return serverPort;
}

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第7张图片

报错,读取超时
微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第8张图片

OpenFeign默认等待1秒钟,超过后报错,如果想要设置默认等待时间,可在需要远程调用的微服务模块的配置文件配置如下代码

OpenFeign 内与 Ribbon 整合了,支持负载均衡,它的超时控制也由最底层的 ribbon 进行控制

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第9张图片

访问成功

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第10张图片


5、OpenFeign日志增强

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

日志级别

  • NONE不记录(DEFAULT)。

  • BASIC仅记录请求方法和URL以及响应状态代码和执行时间。

  • HEADERS记录基本信息以及请求和响应标头。

  • FULL记录请求和响应的标题,正文和元数据。

配置方法

1. 建立配置类

@Configuration
public class FooConfiguration {
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}

微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第11张图片
2. 配置文件中开启日志
微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第12张图片

发起请求,控制台打印详情
微服务OpenFeign实战讲解(远程调用、超时控制、日志增强)!!!_第13张图片


本文源码已由 GitHub https://github.com/2335119327/SpringCloud 已经收录(内涵更多SpringCloud的Demo,有兴趣的小伙伴可以看看),之后会持续更新SpringBoot系列,欢迎Star

觉得博主写的不错的读者大大们,可以点赞关注和收藏哦,谢谢各位!

Java学习路线目录索引
在这里插入图片描述

你可能感兴趣的:(SpringCloud,SpringBoot,java,spring,openfeign,SpringCloud,SpringBoot)