SpringCloud系列:5.微服务间调用Feign

SpringCloud Feign 远程调用(史上最详细讲解) SpringCloud Feign 远程调用(史上最详细讲解)的简单使用。 阅读详情

一、Feign简介

上一章节我们提到,Spring Cloud为我们提供了两种服务调用方式,一种是Ribbon + RestTemplate,另一种是Feign。现在我们就来看看Feign。

Feign是Netflix开发的声明式、模板化的HTTP客户端,它可以帮助我们更快捷、优雅地调用HTTP API。使用Feign,我们只需要创建一个接口并注解。

在使用 RestTemplate时,我们引入了Ribbon提供负载均衡的能力。而Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果,并不需要我们再去声明。

此外,Feign默认与Hystrix整合,为微服务提供熔断的能力。

二、示例演示

继续上一章的假设场景,需要展示出用户喜欢的书籍。

这里我们主要引入Feign的支持spring-cloud-starter-openfeign,同时也引入Hystrix的依赖。

要想使用Feign,首先我们需要在调用服务核心启动类上使用注解@EnableFeignClients声明开启Feign。

然后为了区别调用,我们新增请求,但是其实可以看到,这个和 RestTemplate调用时是一样的,所以重点还是体现在BookService里方法上。

下面我们来看看service里的实现,乍一看,是不是有种熟悉的感觉,是不是有那么短暂的一瞬间感觉这是一个Controller。

使用Feign时,我们只需要声明接口并注解,所以这里是interface,然后使用@FeignClient注解即可,其中value属性声明调用的微服务,而fallback则是Hystrix降级处理的声明,表示当远程服务不可用时,则调用BookFallBackService类的方法。

在这个接口里,我们声明findByIds方法,其中@RequestMapping的作用与SpringMVC类似,它表示调用book-server的/book/{ids}请求,且方法入参要与请求参数一致。

对于BookFallBackService,它实质上就是BookService一个实现类,而当远程服务出现异常是,它就会执行。

至此,Feign + Hystrix就已经搭演示完毕,可以看到使用方式就是这么的SpringCloud,简单粗暴。

依次启动 eureka-server、book-server、user-server。这里book-server分别启动了10830和10831端口,以方便测试负载功能。

然后在swagger-ui界面进行请求调用,可以看到请求能够正常的获取到book-server的数据,且10830和10831都能接收到请求调用。

然后我们逐渐停掉book-server,可以测试出,当10830和10831端口都被停用后,再次调用/user/find/feign/请求,因为无远程服务可调用,此时则会启用Hystrix降级处理,fallback方法声明类得到执行。

源码地址: https://github.com/imyanger/springcloud-project/tree/master/p4-feign%2Bhystrix

 

 

 

 

springcloud篇2-feign、gateway 说明:(1)日志级别NONE-没有日志BASIC-记录请求的开始和结束时间HEADERS-记录请求的开始和结束时、请求头和响应头FULL-记录请求的开始和结束时、请求头和响应头、请求体和响应体但该方式不推荐,会导致紧耦合。之前的微服务允许任何的访问,不安全,需要添加一个网关(功能包括身份认证和权限校验、服务路由、负载均衡、请求限流)。 阅读详情

相关推荐

SpringCloud之Feign远程调用

目录`feign` 简介`feign` 实现远程调用 feign 简介 feign 是 netflix 开发的声明式、模板化的 http 客户端,它使得 http 请求变得更简单,feign 底层的使用的 http 通信框架是 HttpClient。feign 默认集成了 ribbon 和 hystrix,并和 Eureka 结合,实现了负载均衡。feign 被广泛应用在 springcloud 的解决方案中,是学习基于 springcloud 微服务架构不可或缺的重要组件 官方 github:https:

桐花思雨 1879

feign

1、什么是feign Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。 在Spring Cloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。 Spring Cloud对Feign进行了增强,使Feign支持了Sp...

wumingdu1234的博客 760

springcloud中的Feign调用

SpringCloud中Feign默认配置类是FeignClientsConfiguration,我们可以通过@FeignClient的属性自定义配置,自定义配置的优先级会比FeignClientsConfiguration高。

DN金猿的博客 1080

【SpringCloud】学习笔记-p3(Feign远程调用)

视频指路????B站黑马微服务超级推荐!!! Feign远程调用 为啥需要学Feign呢?我们先来回顾之前写的代码 先来看我们以前利用RestTemplate发起远程调用的代码: 这里就有几个问题: 代码可读性差,编程体验不统一 参数复杂URL难以维护 而Feign是一个声明式的http客户端。其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题 1.Feign替代RestTemplate 1.1 引入依赖 我们在order-service服务的pom文件中引入feign的依赖: &

小皮皮LL的博客 4314

springcloud feign本地微服务之间的相互调用

一、随着项目微服务数量越来越多,本地调试的时候很容易把请求打到别人的机器上或者云上环境,所以用自定义注解的方式实现微服务本地之间调用,使用起来也非常简单,只需要在启动类上加一个注解即可。3.使用方法:springboot项目启动类添加@EnableLocalHostFeign注解,参数传值规则:项目名=项目地址。2:加一个规则配置类,在bean交给spring管理之前更改url。

shengyin714959的博客 1495

SpringCloud之Feign:SpringCloud微服务间的优雅调用利器!

Feign( pronounced as \fein\)是一个声明式的、模板化的HTTP客户端,它使得编写Web服务客户端变得更加容易。Feign是由Netflix开源的,旨在简化微服务之间的HTTP请求调用。在Spring Cloud中,Feign被广泛使用作为服务间调用的主要方式之一。Feign的核心思想是使用注解来定义客户端的HTTP请求,从而使得开发者能够像调用本地方法一样调用远程服务。它消除了编写冗长的HTTP客户端代码的需求,使得服务间的通信变得更加简洁和直观。声明式注解。

邓邓子的博客 2573

微服务调用组件Feign详解

Httpclient HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带URLConnection,提升了易用性和灵活性,使客户端发送 HTTP 请求变得容易,提高了开发的效率。(文末有惊喜哦!)Okhttp 一个处理网络请求的开源项目,是安卓端最火的轻量级框架,由 Square 公司贡献,用于替代HttpUrlCon

weixin_51702416的博客 2392

【深度学习】肺结节分割项目实战一:处理数据集

一、LIDC-IDRI数据集简介 官方网站 肺图像数据库协会的图像收集(LIDC-IDRI)包括诊断和带有病变注释标记的肺癌筛查胸部CT。这是一个网络公开的国际资源,用于肺癌检测和诊断的计算机辅助诊断(CAD)方法的开发、培训和评估。 数据集包含1018个病例,每个病例包括来自临床胸部CT扫描的图像和一个相关的XML文件,该文件记录了由四名经验丰富的胸部放射科医生进行的两阶段图像注释过程的结果。在最初的盲读阶段,每个放射科医生独立审查每个CT扫描,并标记出属于三种类型之一的病变(“结节>= 3mm”,

weixin_42182906的博客 1万+

微服务服务间调用组件Feign使用介绍、原理、优化技巧

Feign是一个声明式的Web Service客户端。它让微服务之间的调用变得更简单。Feign具有可插拔式的注解支持,包括Feign 注解和JAX-RS注解。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注解的支持,并且也支持Spring WebFlux。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。Feign的基本概念、原理与使用。Feign采用声明式的接口,自动拼接URL、添加参数等工作,简化HTTP客户端的开发。

青山师 2164

Windows 10/11 注册表 ProfileImagePath 误改修复:3步恢复用户登录与数据安全

本文详细介绍了Windows 10/11系统中因误改注册表ProfileImagePath键值导致用户无法登录的修复方法。通过3个关键步骤,包括定位SID、安全修复注册表项及验证处理,帮助用户恢复登录并保障数据安全。特别强调了操作顺序的重要性以避免数据丢失,适用于各类Windows用户账户登录错误的紧急处理。

chuoshao2508的博客 403

Jetson Orin NX 单目标跟踪算法实战

本文对比了NanoTrack和MixFormerV2两种目标跟踪算法在Jetson Orin NX边缘设备上的实际表现。通过天空小目标跟踪场景测试发现,NanoTrack虽然表征能力较弱,但具有目标身份一致性强、失败模式可控、计算负担小等优势,更适合作为边缘端默认算法。MixFormerV2则适用于高速运动等特定场景。实验数据显示NanoTrack在Orin NX上可达200FPS,远高于MixFormerV2的38-120FPS。建议先采用NanoTrack构建稳定系统,后续再评估复杂算法的适用性。

karmueo46的博客 625

【微服务】SpringCloud之Feign远程调用

使用Feign远程调用代替RestTemplate远程调用。类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制请求失败的重试机制,默认是没有,不过会使用Ribbon的重试。

浩泽学编程的博客 7220

Rk3568 百兆以太网RMII模式DTS配置详解

本文详细解析了RK3568芯片在百兆以太网RMII模式下的DTS配置方法,包括时钟树配置、PHY接口模式定义及实际工程中的进阶设置。通过实战案例和调试技巧,帮助开发者快速解决RMII模式下的常见问题,提升工业控制设备的网络稳定性。

weixin_29189377的博客 420

SpringCloud(12) —— Feign:使用接口方式调用服务

1.Feign简介 Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端 只需要创建一个接口,然后添加注解即可使用Feign Feign,主要是社区版,大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法 微服务名字 【ribbon,即前面我们使用ribbon实现负载均衡的时候选中哪一个服务集群是依据注册中心

Jzandth的博客 8万+

11.15 分析finrl 的框架

11.15 分析finrl 的框架

yueguoqing88的博客 1083

别再自己写组件了!用uni-app的midButton属性5分钟搞定中间凸起TabBar(H5/小程序通用)

本文详细介绍了uni-app官方提供的midButton属性,帮助开发者5分钟内实现中间凸起的TabBar效果,无需编写繁琐的自定义组件代码。该方案兼容H5和微信小程序平台,配置简单且维护成本低,大幅提升开发效率和性能表现。

weixin_30431445的博客 347

SpringCloud:Feign远程调用

Spring Cloud Feign 是一个声明式的、模板化的 HTTP 客户端,它使得编写 HTTP 客户端变得更加简单和方便。它是 Spring Cloud Netflix 的一部分,用于构建分布式系统中的服务消费者。 在微服务架构中,服务之间需要通过网络进行通信。Feign 以接口和注解的方式,将 HTTP 请求的细节进行了封装,开发者只需要定义一个接口并用注解指定服务名和请求路径,就可以像调用本地方法一样进行远程调用,极大地简化了服务之间的通信代码。 Spring Cloud Feign 集成了 R

我是程序员Amin,关注我,带你学习有趣的计算机知识 1432

我用 Python 把 Claude 变成了 “代码审查员“:每次提交前 AI 先 Review,Bug 漏网率降了 80%

这是成败的关键。我们需要给 Claude 立规矩,让它像一个严格的架构师那样思考。你是一名资深的首席软件架构师和安全专家。请审查以下 Git Diff 代码变更。你的任务是:1. **安全性检查**:寻找 SQL 注入、XSS、硬编码密钥、敏感信息泄露等。2. **潜在 Bug**:空指针、资源未关闭、竞态条件、逻辑死循环。3. **代码质量**:命名规范、冗余代码、可读性差、缺乏注释。4. **性能优化**:不必要的数据库查询、低效算法。

BUG猿的博客 143

【微服务架构】SpringCloud(四):声明式服务调用 Feign

接上面例子,此例子和上面例子实现的功能一样。记得两者取一个即可。说明用属性而不是用属性中的configuration。定义拦截器@Override} } 配置文件feign:client:config:再次访问,测试Ok。扩展feign:client:config:通用配置feign:client:config:default:属性配置比Java代码优先级高。也可通过配置设置java代码优先级高。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

【花雕学编程】Arduino ESP32 SPP 之使用Servo库控制360度舵机正反转

使用 Servo 库控制 360 度舵机的正反转是 Arduino ESP32 SPP 应用中的一个重要案例,具有简易控制接口、灵活速度调节和高兼容性等特点,广泛应用于机器人、自动化装置和动态艺术等领域。在第三个案例中,使用map()函数将用户输入的速度参数(范围0-100)映射到舵机控制的角度(0-180),使得用户能够以更人性化的方式控制舵机速度。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

雕爷学编程 1469

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JavaEE:SpringCloud-使用Feign调用微服务

一、导入SpringCloud与SpringBoot依赖包(必须版本对应,此处为2.2.x <-> Hoxton): 见此地址第一章: 二、给被调用Module中配置微服务名称,在被调用Module工程/application.yml文件中: spring: application: name:user-center 三、使用Feign调用微服务(在调用者Module中配置): 1.导入Feign依赖包: <!-- 导入Feign依赖包 --> &lt...

a526001650a的专栏 720

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【SpringCloud微服务系列】SpringCloud组件原理:Eureka,Feign,Ribbon,Hystrix,Zuul

目录 1.前序 1.1 分布式的优缺点 1.1.1 分布式优点 1.1.2 分布式缺点 1.2 分布式服务框架 2.SpringCloud常用组件 2.1 Eureka 2.1.1 同为注册中心,Eureka和Zookeeper的区别: 2.2 Feign 2.3 Ribbon 2.4 Hystrix ...

Yangy的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringCloud2组件之Feign详解

开发环境: 开发工具:IntelliJ IDEA Java版本:1.8 Spring Boot版本:2.1.6.RELEASE Spring Cloud版本:Greenwich.SR1 工程简介:   在SpringCloud2组件之Ribbon详解中,我们使用Ribbon客户端负载均衡实现微服务之间的调用,Ribbon本质上就是一个RestTemplate对象。使用RestTemplate时...

Mr.F的博客 8484

Spring Boot 之四:使用Feign实现微服务间的交互

Spring cloud:使用Feign实现微服务间的交互

caitianzhen2的专栏 1523

SpringCloud微服务之间使用Feign调用不通情况举例

摘要 分3大情景: 远程调用失败 feign.FeignException : status 502 Invalid HTTP method: PATCH executingPATCH 情景1、远程调用失败 原因1:子项目接口没调通 -》 可能是配置文件名字/地址有问题(name或者url) 这是错误的 解决方案:只需要写IP+端口就行 原因2:测试本地子项目没有启动,导致无法调用接口 解决方案: 启动子项目 原因3:Feign里面的路径跟Controller不一样,导致无法调用 解决方案: .

刘大猫 2万+

Springcloud微服务调用ribbon与feign

Springcloud微服务操作 微服务的概念? 将all in one 和 soa 框架的缺点都弥补了的框架结构 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 服务间可以通过“轻量级设备与HTTP型API进行沟通” 服务之...

weixin_43823728的博客 445
上一篇: SpringCloud系列:4.负载均衡Ribbon及断路器Hystrix
下一篇: SpringCloud系列:6.微服务网关服务Zuul
杨小格
博客等级 码龄10年 19粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值