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

SpringCloud系列(32)--使用Hystrix进行全局服务降级

前言:在上一节中我们使用Hystrix进行了服务降级,但是要在每个方法上面配置@HystrixCommand才能实现服务降级,如果需要进行服务降级的方法多了,@HystrixCommand也就得配置很多遍,所以本节内容则是使用Hystrix进行了全局服务降级处理。

1、修改cloud-consumer-feign-hystrix-order80子模块的OrderHystrixController类
package com.ken.springcloud.controller;import com.ken.springcloud.service.PaymentHystrixService;
import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
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;@RestController
@DefaultProperties(defaultFallback = "paymentGlobalFallBackMethod")
public class OrdertHystrixController {@Resourceprivate PaymentHystrixService paymentHystrixService;@GetMapping("/consumer/payment/hystrix/ok/{id}")public String paymentInfoOK(@PathVariable("id") Integer id) {String result = paymentHystrixService.paymentInfoOK(id);return result;}@GetMapping("/consumer/payment/hystrix/timeout/{id}")//一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbackMethod调用类中的指定方法,这里设置服务降级的条件为连接超时超过3秒,即3秒内走paymentInfoTimeOut方法内的业务逻辑,超过3秒走paymentInfoTimeOutHandler方法//@HystrixCommand(fallbackMethod = "paymentInfoTimeOutHandler",commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")})//不指明fallbackMethod方法,其走的就是默认的全局方法defaultFallback,指定就走指定的fallbackMethod方法@HystrixCommandpublic String paymentInfoTimeOut(@PathVariable("id") Integer id) {//这里故意异常用于测试异常后是否会走服务降级的回退方法int i = 10/0;String result = paymentHystrixService.paymentInfoTimeOut(id);return result;}public String paymentInfoTimeOutHandler(Integer id) {return "服务提供者繁忙,请稍后再试";}//全局fallback方法,配置了@HystrixCommand但没有指明fallbackMethod方法的都走这个全局fallback方法public String paymentGlobalFallBackMethod() {return "Global异常处理";}
}

2、重启cloud-consumer-feign-hystrix-order80服务

效果图:

3、 在浏览器的地址栏里分别输入http://localhost:8080/consumer/payment/hystrix/timeout/1通过调用这个接口查看服务消费者的全局服务降级功能是否正常运行

由图可知服务消费者的全局服务降级成功,在服务异常后走了默认全局回退方法paymentGlobalFallBackMethod

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

相关文章:

  • STM32对接霍尔传感器
  • Vibe Coding - 使用cursor从PRD到TASK精准分解执行
  • 第十六届蓝桥杯C/C++程序设计研究生组国赛 国二
  • Vue按键事件
  • ​​根系杂种优势的分子解码:SPE基因互补与进化可塑性的协同效应​​
  • 电路图识图基础知识-塔式起重机控制电路识图与操作要点(三十五)
  • TestCafe 全解析:免费开源的 E2E 测试解决方案实战指南
  • libwebsockets编译
  • 优化提示词的常用技巧
  • 使用AI开发招聘网站(100天AI编程实验)
  • Matplotlib数据可视化入门:从基础图表到多图展示
  • 【AI 测试】测试用例设计:人工智能语言大模型性能测试用例设计
  • MySQL 慢查询日志与 Binlog 启用与故障排查实录
  • 全链接神经网络,CNN,RNN各自擅长解决什么问题
  • HarmonyOS应用开发——层叠布局
  • Deepoc大模型重构核工业智能基座:混合增强架构与安全增强决策技术​
  • MM-AttacKG:一种使用大型语言模型构建攻击图的多模态方法
  • pyhton基础【15】函数进阶一
  • Robyn高性能Web框架系列04:事件、中间件与错误处理
  • 前端跨域解决方案(7):Node中间件
  • 2025年CCF先进音频技术竞赛
  • Node鼠标键盘屏幕控制
  • 【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程
  • Perl语言基础
  • Windows环境Browser-Use平台部署与AI自动化远程访问实现过程
  • Java面试题027:一文深入了解数据库Redis(3)
  • Arrays.asList和 List<String> list = new ArrayList<>();有什么区别
  • C++11的内容
  • 智能生成分析报告系统在危化安全生产监测预警评估中的应用
  • NoSQL 之 Redis 配置与优化