【Spring Cloud】Feign整合服务容错中间件Sentinel

文章目录

  • 引入sentinel依赖
  • 配置文件
  • 为被容错的接口指定容错类
  • 创建容错类
  • 修改controller
  • 演示
  • 扩展
    • 为被容错的接口更改容错类
    • 创建回退工厂类
    • 演示
  • 总结

上一篇文章中我们已经对服务容错中间件 Sentinel 持久化的两种模式进行了全面解析,本文我们将对Feign和Sentinel进行有机整合。

引入sentinel依赖

<!--sentinel客户端-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

配置文件

在配置文件中开启 Feign 对 Sentinel 的支持

feign:
  sentinel:
    enabled: true

为被容错的接口指定容错类

/**
 * value用于指定调用nacos下哪个微服务
 * fallback用于指定容错类
 */
@FeignClient(value="shop-product",fallback = ProductServiceFallback.class)
public interface ProductService {
    //指定调用提供者的哪个方法
    @GetMapping(value = "/product/{pid}")
    ShopProduct findByPid(@PathVariable("pid") Long pid);
}

创建容错类

容错类要求必须实现被容错的接口,并为每个方法实现容错方案

@Component
public class ProductServiceFallback implements ProductService {
    @Override
    public ShopProduct findByPid(Long pid) {
        ShopProduct product = new ShopProduct();
        product.setId(-1L);
        return product;
    }
}

修改controller

在这里插入图片描述

演示

停止shop-product服务,启动shop-order服务,访问下单请求,观察容错效果

在这里插入图片描述

扩展

如果想在容错类中拿到具体的错误,可以使用下面的方式

为被容错的接口更改容错类

更改被容错接口的容错返回类为回退工厂类

@FeignClient(value="shop-product", fallbackFactory = ProductServiceFallBackFactory.class)
public interface ProductService {

    //指定调用提供者的哪个方法
    @GetMapping(value = "/product/{pid}")
    ShopProduct findByPid(@PathVariable("pid") Long pid);
}

创建回退工厂类

@Component
public class ProductServiceFallBackFactory implements FallbackFactory<ProductService> {
    @Override
    public ProductService create(Throwable throwable) {
        return new ProductService(){
            @Override
            public ShopProduct findByPid(Long pid) {
                throwable.printStackTrace();
                ShopProduct product=new ShopProduct();
                product.setId(-1L);
                return product;
            }
        };
    }
}

演示

在这里插入图片描述

注意:Fallback和FallbackFactory只能使用其中一种方式。

总结

到这儿,Feign整合服务容错中间件Sentinel就已经介绍完了。下一篇将为大家带来Gateway——服务网关的相关文章,敬请期待吧!

后续的文章,我们将继续完善我们的微服务系统,集成更多的Alibaba组件。想要了解更多JAVA后端知识,请点击文末名片与我交流吧。留下您的一键三连,让我们在这个寒冷的东西互相温暖吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/649297.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学术图表的基本配色方法

不论是商业图表还是专业图表&#xff0c;图表的配色都极其关键。图表配色主要有彩色和黑白两种配色方案。刘万祥老师曾提出&#xff1a; “在我看来&#xff0c;普通图表与专业图表的差别&#xff0c;很大程度就体现在颜色运用上。” 对于科学图表&#xff0c;大部分国内的期…

lua 计算第几周

需求 计算当前赛季的开始和结束日期&#xff0c;2024年1月1日周一是第1周的开始&#xff0c;每两周是一个赛季。 lua代码 没有处理时区问题 local const 24 * 60 * 60 --一整天的时间戳 local server_time 1716595200--todo:修改服务器时间 local date os.date("*t…

利用阅读APP3.0目录展示要查看的内容02

要实现前面提到的功能并不困难&#xff0c;只要导入如下规则即可: 打开APP导入对应规则: 导入后的目录规则界面: 导入后的替换规则界面: 规则文件详细内容: 1. 目录规则&#xff1a; 2. 替换规则 除了直接导入上述文件&#xff0c;也可以自己添加规则。总之&#xff0c;就是利用…

蓝桥杯第十四届国赛B组刷题笔记

A-0子2023&#xff1a; 题目&#xff1a; 小蓝在黑板上连续写下从 11 到 20232023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; &#x1d446;12345678910111213...20222023S12345678910111213...20222023。 小蓝想知道 &#x1d446;S 中有多少种子序列恰好等…

夏日将至,给手机装个“液冷”降温可行吗?

夏天出门在外&#xff0c;手机总是更容易发热&#xff0c;尤其是顶着大太阳用手机的时候&#xff0c;更是考验手机的散热能力。如果你也是一个对手机体验有追求的人&#xff0c;比较在意手机的温度&#xff0c;那么可以考虑入手一个微泵液冷手机壳。 【什么是微泵液冷壳&#…

《浪姐》也搞live直播,真成综艺流量密码了?

继《歌手》之后&#xff0c;芒果的另一档综艺《浪姐》也将开启直播。 《乘风2024》官博宣布进行突击加场直播赛&#xff0c;姐姐们将面临全开麦live直播&#xff0c;摇人投票排在前十的姐姐获得live直播抢先权。 这是看《歌手2024》直播赛制火了&#xff0c;也想蹭个热度搞直…

JavaScript 新特性:新增声明命令与解构赋值的强大功能

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;声明命令 let、const&#x1f35f;1 let声明符&a…

豆包模型最新数据评测!性能究竟如何?

豆包模型最新数据评测&#xff01;性能究竟如何&#xff1f; 前言 就在5月27日&#xff0c;字节跳动旗下的豆包大模型在火山引擎原动力大会上正式发布&#xff0c;本次大会中豆包的模型能力也引发行业关注。 介绍豆包 豆包是一个多功能 AI 助手&#xff0c;为你的生活、学习、工…

什么是独特摆动交易策略?fpmarkets1分钟讲清楚

摆动交易策略想必各位投资者都已经接触过了&#xff0c;但是什么是独特摆动交易策略&#xff1f;各位投资者知道吗&#xff1f;其实很简单&#xff0c;这是一种基于斐波纳契工具的独特摆动交易策略。下面fpmarkets1分钟讲清楚&#xff0c;趋势总会经历调整&#xff0c;而这些调…

生产者发送源码

具体流程 Producer先从本地尝试获取路由信息本地无缓存的路由信息时&#xff0c;从注册中心中获取路由信息&#xff0c;并缓存到本地获取到的路由信息包含了Topic下的所有Queue&#xff0c;Producer就可以采取负载均衡策略把消息发送到某个队列里Producer发送消息到Broker成功…

GpuMall智算云:fofr/cog-face-to-many/cog-face-to-many

通过该镜像创建实例后&#xff0c;点击更多-创建自定义端口 GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall,面向AI开发者的GPU云平台 输入8188&#xff0c;因为该镜像中的cog-face-tomany监听8188端口&#xff0c;所以必须要填写为8188端口&#xff0c;然后点击确定#au…

Oracle-修改用户名

1、项目背景 需要将导入一份最新的用户数据在tbl用户上&#xff0c;但需要将原来的tbl用户数据保留并能实现两个用户的比对。 2、解决思路 思路一&#xff1a;1&#xff09;新建用户tbl_feng,导入数据&#xff1b;2&#xff09;将两个用户换名称 3&#xff09;比对 思路二&…

全球伦敦金交易时间每天都一样吗?

伦敦金市场是一个全球化的市场&#xff0c;它全天的交易盘面由亚洲、欧洲和北美市场无缝地连接而成&#xff0c;无论来自世界上什么地方的投资者参与其中&#xff0c;都可以得到全天接近24个小时的交易行情&#xff0c;只要有足够的精力&#xff0c;根本不用担心没有交易获利的…

一篇文章教你入门Python

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

各大模型厂商API使用:百度、阿里、豆包、kimi、deepseek

百度ERNIE(支持requests接口) ERNIE Speed、ERNIE Lite免费 免费测试下来模型ernie_speed输出吞吐量计算20-30来个,“{length/cost} tokens/s” 输出总长度/耗时 https://qianfan.cloud.baidu.com/ 文档: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/dltgsna1o a…

力扣算法之1045. 买下所有产品的客户

力扣传送门 题解注释 Customer表中对应的customer_id对应的product_key去重后要全部存在于Product表中的product_key 我的解 SELECT customer_id FROM Customer GROUP BY customer_id HAVING COUNT(DISTINCT product_key)(SELECT COUNT(DISTINCT product_key) FROM Product…

突发!某大厂机房掉电,MySQL数据库无法启动,紧急恢复过程...

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

2024年上半年软考什么时候查成绩?附查询流程

考试一旦结束&#xff0c;并不意味着与考试相关的事情也就结束了。2024年上半年信息系统项目管理师等软考考试结束后&#xff0c;我们还需要关注考后和证书相关的事情&#xff0c;比如成绩查询、证书领取等等。 2024年上半年软考成绩查询 查询时间&#xff1a;预计在2024年7月…

环保督察进行时,企业应对指南|中联环保圈

二月底&#xff0c;第三轮环保督察的首批情况反馈圆满结束。此轮作为第三轮的首批督察&#xff0c;各方格外关注与前两轮的差异。从五个省份的反馈中&#xff0c;可知环境基础设施方面的五类问题&#xff0c;包括污水处理、固废处置、危废处置、建筑垃圾治理和工业废水处理。 2…

看一遍就理解:MVCC原理详解

介绍 MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff09;是一种用于实现数据库并发访问控制的机制。它允许多个用户同时读写同一数据项&#xff0c;从而提高了数据库在高并发环境下的性能和响应速度。以下是具体介绍&#xff1a; 基本…