当前位置: 首页 > article >正文

OpenFeign详解

OpenFeign概述

Feign

Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端

Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。

Feign旨在使编写Java Http客户端变得更容易。

Feign是一个声明式WebService客户端使用Feign能让编写Web Service客户端更加简单。

Feign也支持可拔插式的编码器和解码器。

它的使用方法是定义一个服务接口然后在上面添加注解。

OpenFeign

OpenFeign是Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。

OpenFeign的@Feignclient可以解析SpringMVc的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

搭建项目

在父项目中,创建子项目cloud-openFeign【前提搭建eureka单机版】

修改pom.xml

<dependencies>
    <!-- OpenFeign-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!-- Eureka client-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <!-- actuator -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- SpringMVC-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
    </dependency>
</dependencies>

修改application.yml

server:
  port: 80
spring:
  application:
    name: cloud-openFeign
eureka:
  client:
    service-url:
      # Eureka server 地址
      defaultZone: http://localhost:7001/eureka/

启动类

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients//开启openFeign的接口扫描
public class OpenFeign8001 {
    public static void main(String[] args) {
        SpringApplication.run(OpenFeign8001.class,args);
    }
}

调用服务

其余项目创建接口

@RestController
@RequestMapping("/eureka/pro")
public class testController {
    @GetMapping("/test")
    public String test(){
        return "test";
    }
}

服务层【调用其余应用】

@Component
@FeignClient(value = "CLOUD-EUREKA-PRO")//调用其余应用【value是应用名】
public interface TestService {
    @GetMapping("/eureka/pro/test")
    String test();
}

控制层

@RestController
@RequestMapping("/openFeign")
public class TestController {
    @Autowired
    private TestService testService;
    @GetMapping("/test")
    public String test(){
        return testService.test();
    }
}

测试

localhost:8001/openFeign/test

openFeign超时机制

openFeign超时机制

服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去

在某个峰值时刻,大呈的请求都在同时请求服务消费者,会造成线程的大呈堆积,势必会造成雪崩

利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问则自动断开连接

修改application.yml

#配置openFeign超时时间
feign:
  client:
    config:
      default:
        #连接超时时间 2s
        connectTimeout: 2000
        #读取数据超时时间 2s
        readTimeout: 2000

 

OpenFeign日志增强

OpenFeign日志增强

OpenFeign提供了日志增强功能,但是默认不显示任何日志,开发者可以自己配置日志的级别

OpenFeign的日志级别

NONE:默认的,不显示任何日志;

BASIC:仅记录请求方法、URL、响应状态码及执行时间;

HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息;

FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。

配置类-配置日志级别

import feign.Logger;

@Configuration
public class OpenFeignConfig{
    /**
     * 日志级别定义:FULL(除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。)
     */
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

application.yml-设置开启日志的接口

logging:

  level:

    org.example.service: debug

这里的org.example.service是openFeign接口所在的包名,当然你也可以配置一个特定的openFeign接口


http://www.kler.cn/a/18207.html

相关文章:

  • 「QT」几何数据类 之 QLine 整型直线类
  • 头歌网络安全(11.12)
  • [极客大挑战 2019]PHP 1
  • 【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
  • 【网络】应用层——HTTP协议
  • C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
  • 前端基于uniapp[uniPush]实现APP消息推送(安卓、IOS)
  • 为什么选择云计算
  • 什么是镜像?阿里云服务器镜像是什么?镜像怎么选?
  • 时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)
  • 全网最火,Web自动化测试驱动模型详全,一语点通超实用...
  • k8s基础4——deployment控制器、应用部署、升级、回滚、水平扩容缩容
  • LeetCode 1206. 实现跳表
  • OJ练习第94题——编辑距离
  • 强烈推荐:一款中文AI问答、创作、绘画工具
  • 石油化工企业防雷工程应用解决方案
  • 基于Vue的个人网站的设计与实现
  • 查看NVIDIA GPU占用率方法
  • win10常用操作集合 - vhd/wsl/等等
  • AUTOSAR - CANTP - 学习一 :理论基础
  • 中台产品经理01:中台落地工具MSS模型
  • 社交“搭子”火了!小红书数据分析,品牌正用“陪伴”种草?
  • 用科技创造未来!流辰信息技术助您实现高效办公
  • apple pencil必须要买吗?性价比平替电容笔排行榜
  • SAP BusinessObjects BI crack
  • 精致女孩必备的6款APP,内外兼修,提升气质