当前位置: 首页 > 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

相关文章:

  • 联合语音和文本机器翻译,支持多达100种语言(nature子刊论文研读)
  • [Python] 使用 dataclass 简化数据结构:定义、功能与实战
  • React Native【实用教程】(含图标方案,常用第三库,动画,内置组件,内置Hooks,内置API,自定义组件,创建项目等)
  • 显示任何结构的数组对象数据【向上自动滚动】
  • 【2025CVPR】基于脉冲神经网络的能效目标检测模型:Multi-scale Spiking Detector(MSD)深度解析
  • 用Python“看见未来”:自动驾驶感知系统实战全解析
  • flutter项目环境升级二:从Flutter2.10.5升级到3.29.3
  • 网站对于DDOS攻击的防御方式有哪些?
  • Netty内存池分层设计架构
  • 稳定币走向监管:新秩序下的数字货币新局
  • EcoVadis提升评估得分的策略,EcoVadis常见挑战与解决方案
  • docker方式启动Jenkins
  • ms-swift 微调 internlm3-8b-instruct(论文分类任务)
  • 【ARM 嵌入式 编译系列 7.4 -- GCC 链接脚本中 ASSERT 函数】
  • 队的简单介绍
  • 【ToolJet远程开发】Ubuntu+Docker结合内网穿透技术搭建ToolJet远程开发环境
  • 2、结合STM32CubeMX学习FreeRTOS实时操作系统——任务
  • CC工具箱使用指南:【汉字转拼音】
  • Python-1-环境
  • 在 AWS 上重构数据中台,这家出海企业选择了数栈
  • 营销策划方案书/东莞搜索seo网站关键词优化
  • 长春疫情轨迹最新通报/太原百度推广排名优化
  • 大兴做网站的公司/互动营销平台
  • 服务器网站访问慢/百度百科官网
  • 政府网站建设规范及标准/seo承诺排名的公司
  • adobe mu做可视化网站/5188关键词挖掘工具