最新要闻
- 天天时讯:紫薯泥怎么做好吃-紫薯泥
- 【天天新视野】本周发布!徕卡M11 Monochrom详细规格曝光
- 旗舰功能全下放!华为nova 11 Ultra曝光:卫星通信、可变光圈都支持
- 焦点速看:米粉催雷军发小米13 Ultra:你敢发我就敢买
- 电脑里破解软件又少一款!Win11原生录屏免费平替了:新增快捷键
- 绝对忠诚?超八成iPhone用户丢机后秒换新款iPhone
- 为什么打不开空间_腾讯官方的解决方法
- 《终结者》T-1000成真!科学家研制出可固液转变机器人 形态科幻
- 当前观点:或命名为“高山” 魏牌全新插混MPV申报:红旗HQ9有话要说
- 印度版大G来啦!4排10座轴距超3米 马力只有90匹
- 坚持元宇宙不动摇:Meta百万美元年薪招聘VR程序员
- 环球观热点:女子下班回工作消息获赔加班费引热议!调查称仅1成多人拒绝下班秒回工作
- 全球即时:卢拉发推预告:“我将启程前往中国”,期望加强巴中贸易伙伴关系
- 能打比亚迪宋PLUS DM-i 哈弗枭龙MAX开订:用上Hi4电四驱
- 焦点关注:两大巨头“世纪大和解”!腾讯视频官方入驻抖音:昵称“鹅家”
- 天天日报丨13代标压高能轻薄本!华硕无畏15i 2023到手5699元:OLED好屏值得拥有
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
day07-OpenFeign-服务调用
SpringCloud OpenFeign-服务调用
1.OpenFeign介绍
https://github.com/spring-cloud/spring-cloud-openfeign
- OpenFeign是一个声明式WebService客户端,使用OpenFeign让编写Web Service客户端更加简单
- 它的使用方法是定义一个服务端口然后在上面添加注解
- OpenFeign也支持可插拔式的编码器和解码器
- SpringCloud对OpenFeign进行了封装使其支持SpringMVC标准注解和HttpMessageConverters消息转换器
- OpenFeign可以与Eureka和Ribbon组合使用以支持负载均衡
2.OpenFeign和Feign的区别
- Feign
- Feign是SpringCloud组件中的一个轻量级RESTful的Http服务客户端
- Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务
- Feign的使用方法是:使用Feign的注解定义接口,调用服务注册中心的服务
- Feign支持的注解和用法请参考官方文档:OpenFeign/feign: Feign makes writing java http clients easier (github.com)
- Feign本身不支持SpringMVC注解,它有一套自己的注解
- Feign集成了Ribbon、RestTemplate实现了负载均衡的执行Http调用,只不过对原有的方式(Ribbon+RestTemplate)进行了封装,开发者不必手动使用RestTemplate调服务,而是定义一个接口,在这个接口中标注一个注解即可完成服务调用,这样更加符合面向接口编程的宗旨,简化了开发。
- OpenFeign
- OpenFeign是SpringCloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等
- OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口
- OpenFeign通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务
- 一句话:OpenFeign就是在Feign的基础上做了加强
3.OpenFeign应用实例
需求分析:如下,将原来使用Ribbon+RestTemplate实现:获取服务+远程调用+负载均衡,替换为使用OpenFeign来实现
参考 member-service-consumer-80 创建 member-service-consumer-openfeign-80(步骤参考以前)
【资料图】
(1)创建新模块-member-service-consumer-openfeign-80
(2)修改 pom.xml:拷贝 member-service-consumer-80 的 pom.xml 依赖,并加入 openfeign-starter
org.springframework.cloud spring-cloud-starter-openfeign
(3)创建application.yml
server: port: 80spring: application: name: e-commerce-consumer-openfeign-80eureka: client: register-with-eureka: true #将自己注册到EurekaServer fetch-registry: true service-url: #将自己注册都哪个EurekaServer defaultZone: http://eureka9001.com:9001/eureka,http://eureka9002.com:9002/eureka
(4)创建主启动类
package com.li.springcloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.openfeign.EnableFeignClients;/** * @author 李 * @version 1.0 */@SpringBootApplication@EnableEurekaClient@EnableFeignClients//启动OpenFeignClientpublic class MemberConsumerOpenfeignApplication { public static void main(String[] args) { SpringApplication .run(MemberConsumerOpenfeignApplication.class,args); }}
(5)创建接口,该接口最终是由OpenFeign来实现的(这里是OpenFeign的核心)
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")
指定远程调用的地址别名- 注意这里的
@GetMapping("/member/get/{id}")
指定要调用服务方
的哪个方法,路径要和服务方的路径匹配。这是OpenFeign支持的SpringMVC的注解
package com.li.springcloud.service;import com.li.springcloud.entity.Member;import com.li.springcloud.utils.Result;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.stereotype.Component;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;/** * @author 李 * @version 1.0 */@Component//MEMBER-SERVICE-PROVIDER 是服务提供方[集群]注册到EurekaServer的别名//根据这个key,可以在EurekaServer提供的注册信息中找到对应value,即真正的服务方地址:http://ip+port@FeignClient(value = "MEMBER-SERVICE-PROVIDER")public interface MemberFeignService { //定义方法-远程调用的接口 /** * 1.远程调用的方式是get * 2.远程调用的url http://ip+port/member/get/{id} * 3.MEMBER-SERVICE-PROVIDER 是服务提供方[集群]注册到EurekaServer的别名 * 4.OpenFeign会根据负载均衡来决定要掉用服务提供方的哪个节点(默认是轮询) * 5.OpenFeign的好处是支持了SpringMVC注解+使用接口解耦 * @param id * @return */ @GetMapping("/member/get/{id}") public Result getMemberById(@PathVariable("id") Integer id);}
(6)创建MemberConsumerFeignController.java
这里的@GetMapping("/member/consumer/openfeign/get/{id}")
,是消费方给浏览器的接口。
package com.li.springcloud.controller;import com.li.springcloud.service.MemberFeignService;import com.li.springcloud.utils.Result;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/** * @author 李 * @version 1.0 */@RestControllerpublic class MemberConsumerFeignController { //装配MemberFeignService, //使用时该接口会对应一个代理对象,通过代理对象可以该接口的方法 @Resource private MemberFeignService memberFeignService; @GetMapping("/member/consumer/openfeign/get/{id}") public Result getMemberById(@PathVariable("id") Integer id) { return memberFeignService.getMemberById(id); }}
(7)启动EurekaServer,服务消费方,启动本模块主程序,在浏览器中访问:http://localhost:80/member/consumer/openfeign/get/5
,可以看到查询数据成功,并且多次刷新会发现调用的接口是轮询的。
注意事项和使用细节
OpenFeign使用特点是 微服务调用接口+@FeignClient,使用接口进行解耦
接口中的
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")
,这里的MEMBER-SERVICE-PROVIDER就是Eureka Server的服务提供方注册的别名,底层会通过这个别名(key)找到真正的地址(value)接口中的方法,value是不能乱写的,要根据服务消费方的url一致,否则无法访问到服务消费方对应的方法
4.OpenFeign的日志配置
4.1基本介绍
Feign提供了日志打印功能,可以通过配置来调整日志级别,从而对Feign接口的调用情况进行监控和输出
日志级别
- NONE:默认的,不显示任何日志
- BASIC:仅记录请求方法、URL、响应状态码和执行时间
- HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息
- FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据
4.2日志配置-应用实例
(1)在member-service-consumer-80创建OpenFeignConfig.java
package com.li.springcloud.config;import feign.Logger;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @author 李 * @version 1.0 */@Configurationpublic class OpenFeignConfig { @Bean public Logger.Level loggerLevel() { return Logger.Level.FULL; }}
(2)修改application.yml
logging: level: #对MemberFeignService接口调用过程打印信息-Debug com.li.springcloud.service.MemberFeignService: debug
常见的日志级别有 5 种,分别是 error、warn、info、debug、trace
error:错误日志,指比较严重的错误,对正常业务有影响,需要运维配置监控的;
warn:警告日志,一般的错误,对业务影响不大,但是需要开发关注;
info:信息日志,记录排查问题的关键信息,如调用时间、出参入参等等;
debug:用于开发 DEBUG 的,关键逻辑里面的运行时数据;
trace:最详细的信息,一般这些信息只记录到日志文件中。
(3)重启模块,浏览器访问消费模块,后台输出如下:
5.OpenFeign超时时间配置
OpenFeign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,那么会相应的报错。
而实际会因为业务的不同出现超出1秒的情况,这时我们需要调整超时时间:
https://cloud.tencent.com/developer/article/1444369
Feign 的负载均衡底层用的就是 Ribbon。在application.yml中添加如下配置,超过8秒没连接上报连接超时,如果超过8秒没有响应,报请求超时
#全局配置ribbon: # 设置feign客户端超时时间(OpenFeign默认支持ribbon),单位ms,默认超时时间为1s ReadTimeout: 8000 #两端连接所用时间 ConnectionTimeout: 8000
关键词:
-
day07-OpenFeign-服务调用
SpringCloudOpenFeign-服务调用1 OpenFeign介绍https: github com spring-cloud spring-cloud-openfeignOpen
来源: day07-OpenFeign-服务调用
看热讯:stm32 使用多串口通信调试总结
速讯:记录-css实现交融文字效果
环球最新:阿里云 - 连接不同VPC方案
天天时讯:紫薯泥怎么做好吃-紫薯泥
【天天新视野】本周发布!徕卡M11 Monochrom详细规格曝光
旗舰功能全下放!华为nova 11 Ultra曝光:卫星通信、可变光圈都支持
焦点速看:米粉催雷军发小米13 Ultra:你敢发我就敢买
电脑里破解软件又少一款!Win11原生录屏免费平替了:新增快捷键
绝对忠诚?超八成iPhone用户丢机后秒换新款iPhone
全球快讯:从spring boot泄露到接管云服务器平台
ThreadPoolExecutor源码学习
图文介绍 Windows 系统下打包上传 IOS APP 流程
【Visual Leak Detector】使用注意事项
一个TCP 连接可以发送多少个HTTP请求?
为什么打不开空间_腾讯官方的解决方法
《终结者》T-1000成真!科学家研制出可固液转变机器人 形态科幻
当前观点:或命名为“高山” 魏牌全新插混MPV申报:红旗HQ9有话要说
印度版大G来啦!4排10座轴距超3米 马力只有90匹
坚持元宇宙不动摇:Meta百万美元年薪招聘VR程序员
环球观热点:女子下班回工作消息获赔加班费引热议!调查称仅1成多人拒绝下班秒回工作
全球即时:卢拉发推预告:“我将启程前往中国”,期望加强巴中贸易伙伴关系
世界简讯:【一行代码秒上云】Serverless六步构建全栈网站
科创人·中建三局一公司尹奎:数字化变革能创造全新行业,其意义超越形式、范式创新
当前关注:CAD二次开发,安装程序中写注册表
滚动:低代码开发,是稳扎稳打还是饮鸩止渴?
快报:【金融街发布】人民银行:3月货币供应量M2同比增长12.7% 比上月回落0.2个百分点
能打比亚迪宋PLUS DM-i 哈弗枭龙MAX开订:用上Hi4电四驱
焦点关注:两大巨头“世纪大和解”!腾讯视频官方入驻抖音:昵称“鹅家”
天天日报丨13代标压高能轻薄本!华硕无畏15i 2023到手5699元:OLED好屏值得拥有
又来一份10年协议!微软与英国EE达成云游戏合作
焦点播报:《圣斗士星矢》真人版战斗预告:变身画面超燃!
温彬等:食品、能源价格双双下探,促内需政策仍须发力
精彩看点:【业务自动化平台】上海道宁与UiPath致力于让每个企业、每个人都能充分利用自动化带来的成就和优势
微服务保护--Sentinel
ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?
【新华500】新华500指数(989001)11日微跌0.07%
快消息!7000mAh超大电池比肩充电宝!华为畅享60X官宣:实用体验才是王道
世界快资讯:女子看电视惊现3000多秒超长广告 直呼太离谱
环球今亮点!国内最新快递服务满意度出炉:顺丰、京东、邮政排前三 你经常用哪家?
简讯:大家不看电视了?海信:电视开机率低是个伪命题
环球快讯:别YY失控!深圳一辆特斯拉钣喷中心破窗而出 差点掉下来:官方回应
热议:希腊神话的英语典故
重试,让程序更健壮
aix系统如何查看网卡配置
模型训练与推理中为什么需要使用GPU?基本概念梳理
全球球精选!2023年最新iOS打包发布流程汇总
韩总统府称网传美监听韩政府文件部分系伪造
多地现沙尘暴!中央气象台首席预报员:沙尘天气无需根治
英特尔锐炫A750最新驱动游戏实测:进步巨大
刷新认知!男子站临海近乎垂直石壁上钓鱼:网友直呼请勿模仿
环球新动态:世界首个“九尾狐甲鱼”化石被发现:长相奇特怪异
全球第一批25个GPT模型开始自由生活
当前资讯!应用火山引擎 DataTester“避坑”,抖音实现用 A/B 实验快速试错
路由跳转及传参
每日消息!堆叠面积图的优点和缺点有哪些?
跟ChatGPT聊天、需求润色优化,禅道OpenAI 插件发布!
三星9082怎么恢复出厂设置?三星9082手机参数
索尼w570现在值多少钱?索尼w570参数
台式机怎么设置无线上网?台式机怎么调节屏幕亮度?
巧克力键盘是什么意思?巧克力键盘和机械键盘的区别是什么?
诺基亚n82上市价格是多少?诺基亚n82手机参数
每日时讯!鑫顺看市:4.11黄金守住1980关键位,多头或再次卷土重来
当前资讯![网络]应用层协议:HTTP / HTTPS
用ChatGPT问.NET的相关问题,.NET工程师的前景不错
每日热讯!男子被鱼刺卡喉硬吞饭团:结果扎穿食管
天天速看:力压宝马X5 理想L7交付首月狂卖8009台:稳居国内中大型SUV销量第一
世界热门:米其林中国回应顾客用餐后上吐下泻:非常重视消费者健康安全
焦点!紫光展锐首款车规级5G座舱芯片平台A7870公布:6nm加持、NPU算力媲美骁龙8155
全球热推荐:蓝牌要成历史?新款奔腾T90官图:全新车牌引遐想
世界新消息丨又萌又飒!池州一高校女生穿公主裙一“跑”走红
在寻找 LastPass 的更好替代品吗?
当前简讯:金融系统NTP时钟同步(网络校时服务器)架设工作详情
[网络]TCP的三次握手与四次挥手[转载]
每日焦点!Python程序笔记20230301
云图说|图解云消息服务KooMessage
环球微资讯!充电仅需18秒!中科大研发出新型水系锌离子电池
或为问界M9 赛力斯大型SUV专利图曝光:有点“震撼”
天天头条:车评人表扬华为问界:看不见的底盘件 大面积用铝合金材料
环球信息:林州“网红试胆石”出现裂缝仍有游客打卡 官方回应
天天速讯:299元 小米小爱音箱儿童版开卖:童声专项识别优化
世界银行上调2023年全球经济增长预期至2%
关于算法开源乱七八糟事
【报资讯】RDIF.vNext全新低代码快速开发框架平台发布
环球聚焦:基于pdfbox实现的pdf添加文字水印工具
【全球新要闻】老爸老妈浪漫史第五季(老爸老妈的浪漫史第五季结局是什么?)
爷青回!《灌篮高手》中国首映礼官宣:4月15日见
世界信息:快科技App 5.2.1新版发布:新增沉浸式阅读、排行榜一键分享长图
环球通讯!特斯拉下代电机不用稀土 国内专家:屁股决定脑袋 马斯克是迫不得已
今日聚焦!"全聚德连亏三年"登热搜:今年净亏损2.78亿元
时讯:iPhone 15 Pro相机凸起3.78毫米:约2枚1元硬币厚度
通讯!GGII:2022年中国锂电池回收处理废旧锂电池量41万吨,同比增37%
环球速讯:如何用Golang处理每分钟100万个请求
天天热点评!全网最详细中英文ChatGPT-GPT-4示例文档-步骤指示智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js
【高端访谈】“与时俱进”|绿债担保品管理驱动绿色金融体系建设升级——专访中央结算公司担保品业务负责人
每日看点!电动牙刷别乱买 买错代价太大了
全球即时:小鹏P7迎整车OTA:6项新增功能 360全景影像正式上线
世界热消息:挑战不可能!阿维塔11在“8D山城”重庆开启城区NCA智驾导航辅助体验
汽车促销潮蔓延 车险会降价吗?业内人士:没有直接影响
环球时讯:成都双流现飞机“横穿马路” 网友:真“飞”机动车道