一、简介

Feign是Netflix开发的声明式,模板化的HTTP客户端。

Feign可帮助我们更加便捷,优雅的调用HTTP API,符合Java编码习惯。

在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。

SpringCloud对Feign进行了增强,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka ,从而让Feign的使用更加方便。

二、配置使用

2.1 添加依赖

2.2 启动类注解

2.3 定义OpenFeign接口

RestTemplate的配置删除:

​ openfeign调用: openfeign+eureka+ribbon

定义OpenFeign接口,真正去调用服务的是这个接口,controller或者service通过调用这个接口来调用微服务

接口的方法体就复制被调用的微服务的controller方法体来写

2.4 controller

返回openfeign的数据

执行流程:通过注入接口,获得服务名,通过调用接口的方法,获得访问路径,通过eureka注册中心就能去访问这个服务路径对应的方法

2.5 参数问题

spring里当接收参数和路径变量占位符一致时,pathvariable可省略;当接收参数和路径变量占位符不一致时,pathvariable不可省略,起到校正参数的作用(如表单传的参数和接收参数不一致,要使用requestparam校正参数来校正),且校正参数要和路径变量占位符一致

但用openfeign来调用时,openfeign里的校正参数必须写,无论一致不一致都要写。

就是调用者的controller和被调用者的controller的校正参数可省略时都可以省略,但是openfeign里的接口方法必须要写校正参数,这是openfeign的一个规则吧

openfeign里省略校正参数时会报错,所以最好养成习惯在所有controller里都写上校正参数,肯定不出错。

三、负载均衡

Feign中本身已经集成了Ribbon依赖和自动配置,因此我们不需要额外引入依赖,也不需要再注册RestTemplate 对象。

四、超时控制

默认Feign客户端只等待1秒钟,但是服务端处理需要超过1秒钟,导致Feign客户端不想等待了 ,直接返回报错。

被调用端延迟0.5秒,调用和被调用者都是正常的

被调用端延迟1秒

被调用端正常

调用端就会报错,超出默认1秒忍受时间

为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制。

可以在ymI文件中开启配置

ribbon:#建立连接后,从服务器读到可用资源的最长时间,这个时间就是最长等待时间,至少要让其大于1秒ReadTimeout: 1200#建立连接所用的最长时间,指网络状况正常的情况下两端建立连接的时间ConnectTimeout: 500

再次测试就成功了

五、日志打印功能

Feign提供了日志打印功能,我们可以通过配来调整日志级别,从而了解Feign中Http请求的细节。

5.1概念

#日志级别:

#NONE【性能最佳,适用于生产】:不记录任何日志(默认值)

#BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间

#HEADERS:记录BASIC级别的基础上,记录请求和响应的header。

#FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数据。

5.2 配置文件

#Feign日志级别
feign:client:config:module01:loggerLevel: FULL#Sring日志级别,这个必须写到feign,不然看不到feign的相关日志
logging:level:com.reed.module02.feign: debug#二者必须一起配置

每次请求的信息都能看得到

5.3 使用配置类替代配置文件

代替

SpringCloud-4-OpenFeign相关推荐

  1. Springboot + SpringCloud + Nacos + OpenFeign + Gateway

    Springboot + SpringCloud + Nacos + OpenFeign + Gateway 根节点相关依赖 <parent><groupId>org.spri ...

  2. SpringCloud组件OpenFeign——默认HTTP请求方式

    OpenFeign相较于Feign新增了对SpringMvc的支持,通过以下方式可以调用服务端对应的方法. 但是如果使用@RequestMapping注解不指定请求方式时,通过客户端打印的OpenFe ...

  3. SpringCloud Hoxton——OpenFeign服务接口调用

    1.开篇 github源码地址:https://github.com/2656307671/-SpringCloud-Hoxton-OpenFeign gite源码地址:https://gitee.c ...

  4. SpringCloud(三)- OpenFeign简介及@FeignClient等注解的使用

    唯能极于情,故能极于剑 本文转载于:http://www.codecow.cn/ 此文由四部分组成(OpenFeign简介.@FeignClient 使用.实操.总结),别着急,慢慢来 文章目录 一. ...

  5. SpringCloud源码探析(四)-OpenFeign使用及其原理

    1.概述 在SpringCloud中,服务之间的调用方式可以通过ResTemplate进行调用,也可以通过Feign调用.ResTemplate的缺陷在于需要指定请求url,存在硬编码问题,导致代码难 ...

  6. spring cloud整合OpenFeign

    spring cloud整合OpenFeign pom.xml配置 <!-- https://mvnrepository.com/artifact/org.springframework.clo ...

  7. openfeign 负载均衡调用服务

    https://github.com/spring-cloud/spring-cloud-openfeign openFeign, fegin

  8. 6.SpringCloud -- 注册中心与配置中心 Nacos、网关 Gateway

    6.SpringCloud -- 注册中心与配置中心 Nacos.网关 Gateway 一.了解一下 SpringCloud Alibaba 1.1 SpringCloudAlibaba (1)简单说 ...

  9. SpringCloud渐进试分析汇总(一)

    一.微服务直接调用 通过RestTemplate订单服务直接访问视频服务 1.在SpringBoot启动类中添加RestTemplate对象交给SpringBoot管理. @SpringBootApp ...

  10. docker 安装nacos_19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

最新文章

  1. Node.js连接MySQL
  2. 在 N 条水平线与 M 条竖直线构成的网格中,放 K 枚石子
  3. Refactoring Connection To Sql
  4. tensorflow离线安装指南
  5. 【BZOJ3669】【codevs3314】魔法森林,写作LCT,读作SPFA
  6. 沃尔沃XC40纯电版官宣降价至29.9万元起
  7. java 事件分发机制_读Android源码之事件分发机制最全总结
  8. linux返回值含义,linux命令返回值的含义解析
  9. 应用安全 - Web安全 - 上传漏洞 - 攻防
  10. 从现有数据创建 XML 架构和数据集
  11. MLDn学习笔记 —— JDBC
  12. CentOS mysql重置密码
  13. Rayleigh-Ritz法和Galerkin法
  14. linux bttrack服务,给centos7上的aria2添加BT Tracker服务器
  15. 如何能够快速提升自己的工作能力?
  16. Java连接数据库实现用户登录密码验证
  17. spss python_ARIMA模型 - [SPSS Python]
  18. ceph mon 无法启动,报错:ceph-12.2.11/src/mon/AuthMonitor.cc: 157: FAILED assert(ret == 0)
  19. Confluence 实现公司wiki
  20. “沃尔沃环球帆船赛挑战极限—S40征服之旅”冠军竞猜活动启动

热门文章

  1. 避坑,职场远离PUA,PUA常见的套路与话术你得了解一下!
  2. html引入css文件和js文件方式
  3. 360Buy刘强东:中国电子商务还没形成产业
  4. 05_01_拉钩教育课程管理系统之一:项目介绍
  5. AUTOSAR实战教程 - 通信协议栈CAN_CANIF_PDUR_CANTP_COM_XCP_ECUC配置一网打尽
  6. Codeforces 450 B. Jzzhu and Sequences
  7. 大学人工智能专业应该怎么学
  8. 还没理解微前端?手把手教你实现一个迷你版
  9. 雄霸迈阿密java_罪恶都市3之雄霸迈阿密
  10. 前端:给中国奥运金牌数做可视化