SpringCloud-4-OpenFeign
一、简介
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相关推荐
- Springboot + SpringCloud + Nacos + OpenFeign + Gateway
Springboot + SpringCloud + Nacos + OpenFeign + Gateway 根节点相关依赖 <parent><groupId>org.spri ...
- SpringCloud组件OpenFeign——默认HTTP请求方式
OpenFeign相较于Feign新增了对SpringMvc的支持,通过以下方式可以调用服务端对应的方法. 但是如果使用@RequestMapping注解不指定请求方式时,通过客户端打印的OpenFe ...
- SpringCloud Hoxton——OpenFeign服务接口调用
1.开篇 github源码地址:https://github.com/2656307671/-SpringCloud-Hoxton-OpenFeign gite源码地址:https://gitee.c ...
- SpringCloud(三)- OpenFeign简介及@FeignClient等注解的使用
唯能极于情,故能极于剑 本文转载于:http://www.codecow.cn/ 此文由四部分组成(OpenFeign简介.@FeignClient 使用.实操.总结),别着急,慢慢来 文章目录 一. ...
- SpringCloud源码探析(四)-OpenFeign使用及其原理
1.概述 在SpringCloud中,服务之间的调用方式可以通过ResTemplate进行调用,也可以通过Feign调用.ResTemplate的缺陷在于需要指定请求url,存在硬编码问题,导致代码难 ...
- spring cloud整合OpenFeign
spring cloud整合OpenFeign pom.xml配置 <!-- https://mvnrepository.com/artifact/org.springframework.clo ...
- openfeign 负载均衡调用服务
https://github.com/spring-cloud/spring-cloud-openfeign openFeign, fegin
- 6.SpringCloud -- 注册中心与配置中心 Nacos、网关 Gateway
6.SpringCloud -- 注册中心与配置中心 Nacos.网关 Gateway 一.了解一下 SpringCloud Alibaba 1.1 SpringCloudAlibaba (1)简单说 ...
- SpringCloud渐进试分析汇总(一)
一.微服务直接调用 通过RestTemplate订单服务直接访问视频服务 1.在SpringBoot启动类中添加RestTemplate对象交给SpringBoot管理. @SpringBootApp ...
- docker 安装nacos_19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
最新文章
- Node.js连接MySQL
- 在 N 条水平线与 M 条竖直线构成的网格中,放 K 枚石子
- Refactoring Connection To Sql
- tensorflow离线安装指南
- 【BZOJ3669】【codevs3314】魔法森林,写作LCT,读作SPFA
- 沃尔沃XC40纯电版官宣降价至29.9万元起
- java 事件分发机制_读Android源码之事件分发机制最全总结
- linux返回值含义,linux命令返回值的含义解析
- 应用安全 - Web安全 - 上传漏洞 - 攻防
- 从现有数据创建 XML 架构和数据集
- MLDn学习笔记 —— JDBC
- CentOS mysql重置密码
- Rayleigh-Ritz法和Galerkin法
- linux bttrack服务,给centos7上的aria2添加BT Tracker服务器
- 如何能够快速提升自己的工作能力?
- Java连接数据库实现用户登录密码验证
- spss python_ARIMA模型 - [SPSS Python]
- ceph mon 无法启动,报错:ceph-12.2.11/src/mon/AuthMonitor.cc: 157: FAILED assert(ret == 0)
- Confluence 实现公司wiki
- “沃尔沃环球帆船赛挑战极限—S40征服之旅”冠军竞猜活动启动
热门文章
- 避坑,职场远离PUA,PUA常见的套路与话术你得了解一下!
- html引入css文件和js文件方式
- 360Buy刘强东:中国电子商务还没形成产业
- 05_01_拉钩教育课程管理系统之一:项目介绍
- AUTOSAR实战教程 - 通信协议栈CAN_CANIF_PDUR_CANTP_COM_XCP_ECUC配置一网打尽
- Codeforces 450 B. Jzzhu and Sequences
- 大学人工智能专业应该怎么学
- 还没理解微前端?手把手教你实现一个迷你版
- 雄霸迈阿密java_罪恶都市3之雄霸迈阿密
- 前端:给中国奥运金牌数做可视化