当前位置: 首页 > news >正文

SpringCloudAlibaba-整合sentinel(四)

目录地址:

SpringCloudAlibaba整合-CSDN博客

这里只关注代码部分,至于sentinel服务UI的实用,后面可以补上

这里做一个改造:

因为sentinel可以和openfeign结合使用,为微服务做熔断降级;

为了方便微服务之间的调用,把远程调用接口移动到api模块;

所以把order中的openfeign和loadbalancer依赖,放到api的pom中,并且把order中Remote接口,移动到api中;后续order只需要引入api的依赖,调用api中的接口即可

1.在api中引入sentinel和openfeign

<!--openfeign-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency><!--loadbalancer-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency><!--sentinel-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2.把接口从order转移到api,并修改

@FeignClient(name="my-user", fallbackFactory = UserServiceFactory.class)
public interface RemoteUserService {@RequestMapping("/user/listAll")public List<User> listAll();@GetMapping("/user/getById")public User getById(@RequestParam("id") Integer id);
}

api模块,添加UserServiceFactory类

@Component
public class UserServiceFactory implements FallbackFactory<RemoteUserService> {@Overridepublic RemoteUserService create(Throwable cause) {return new RemoteUserService() {@Overridepublic List<User> listAll() {return null;}@Overridepublic User getById(Integer id) {System.out.println("user服务异常");return null;}};}
}

3.注意要把UserServiceFactory放到META-INF/spring.factories文件中

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.test.api.remote.fallbackFactory.UserServiceFactory,\
com.test.api.remote.fallbackFactory.ProductServiceFactory

4.order引入api依赖,并在启动类添加注解,扫描feignClient接口

@EnableFeignClients(basePackages = {"com.test.api.remote"})

5.order的配置文件添加

feign:sentinel:enabled: true

6.重启服务,访问接口,正常访问

此时停止user服务,再次访问order接口,返回null,后台日志打印“user服务异常”

http://www.lryc.cn/news/339011.html

相关文章:

  • 【研发日记】Matlab/Simulink软件优化(一)——动态内存负荷压缩
  • python使用Flask框架开发API
  • 使用hexo+gitee从零搭建个人博客
  • 绝地求生:杜卡迪来了,这些摩托车技巧不学一下吗?
  • openstack安装dashboard后登录网页显示404错误
  • c# Xml 和 Json 转换方法记录
  • OpenHarmony南向开发案例:【智能垃圾桶】
  • 每日一题---OJ题: 旋转数组
  • 基于单链表的通讯录C语言实现
  • 【深度学习】YOLO-World: Real-Time Open-Vocabulary Object Detection,目标检测
  • debian安装和基本使用
  • nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)
  • 优优嗨聚集团:如何优雅地解决个人债务问题,一步步走向财务自由
  • SpringCloud实用篇(四)——Nacos
  • 【嵌入式基础知识学习】AD/DA—数模/模数转换
  • Swift中的结构体
  • Selenium - java - 屏幕截图
  • 【论文阅读——SplitFed: When Federated Learning Meets Split Learning】
  • Python使用方式介绍
  • 浅述python中NumPy包
  • jvm的面试回答
  • 打不动的蓝桥杯
  • 学习笔记——C语言基本概念文件——(13)
  • 【MySQL】事务篇
  • tsconfig.json文件常用配置
  • 【Linux】tcpdump P1 - 网络过滤选项
  • 网络篇04 | 应用层 mqtt(物联网)
  • Transformer模型-decoder解码器,target mask目标掩码的简明介绍
  • All in One:Prometheus 多实例数据统一管理最佳实践
  • mysql报错-mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止和数据恢复