欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud集成Hystrix熔斷過程分步分解

 更新時間:2022年09月28日 09:26:39   作者:Echoo2787  
通過hystrix可以解決雪崩效應問題,它提供了資源隔離、降級機制、融斷、緩存等功能。接下來通過本文給大家分享SpringCloud集成Hystrix熔斷,感興趣的朋友一起看看吧

版本:

SpringBoot 2.6.1

SpringCloud 2021.0.0

依賴

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
	<version>2.1.6.RELEASE</version>
</dependency>

貼@EnableHystrix注解

@EnableHystrix
@SpringBootApplication
public class ConsumerOneApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerOneApplication.class, args);
    }
}

在需要熔斷的接口上貼@HystrixCommand注解

@RequestMapping("/consumerOne")
@RestController
public class ControllerOne {
    @Autowired
    private RestTemplate restTemplate;
    private String providerOneName = "provider-one";
    @HystrixCommand(fallbackMethod = "fallbackMethodOne")
    @RequestMapping("/serviceOne/{msg}")
    public String serviceOne(@PathVariable("msg") String msg) {
        return restTemplate.getForObject("http://" + providerOneName + "/providerOne/serviceOne/" + msg, String.class);
    }
	/** 熔斷回調方法 */
    private String fallbackMethodOne(String msg) {
        return "熔斷一默認返回:" + msg;
    }
}

異常熔斷測試

其中一個服務方拋異常,另一服務方正常返回

@RequestMapping("/providerOne")
@RestController
public class ControllerOne {
    @RequestMapping("/serviceOne/{msg}")
    public String serviceOne(@PathVariable("msg") String msg) {
        throw new RuntimeException();
        // return "8702:" + msg;
    }
}
@RequestMapping("/providerOne")
@RestController
public class ControllerOne {
    @RequestMapping("/serviceOne/{msg}")
    public String serviceOne(@PathVariable("msg") String msg) {
        return "8701:" + msg;
    }
}

訪問結果:

超時熔斷測試

全局

先配置默認超時時間為3秒(default為全局)

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000

在這里插入代碼片

其中一個接口睡眠4秒

@RequestMapping("/providerOne")
@RestController
public class ControllerOne {
    @RequestMapping("/serviceOne/{msg}")
    public String serviceOne(@PathVariable("msg") String msg) {
        try {
            Thread.sleep(4 * 1000);
            return "8702:" + msg;
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "8702:" + msg;
    }
}

訪問結果:

當服務方為延時返回的那個時,訪問等待了3秒返回熔斷默認對象

另一個正常

單個接口

除了全局外,另外給serviceTwo接口配置獨立的超時時間,其余不變

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000
    serviceTwo:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000

增加一個路徑為serviceTwo的接口

@RequestMapping("/consumerOne")
@RestController
public class ControllerOne {
    @Autowired
    private RestTemplate restTemplate;
    private String providerOneName = "provider-one";
    @HystrixCommand(fallbackMethod = "fallbackMethodOne")
    @RequestMapping("/serviceOne/{msg}")
    public String serviceOne(@PathVariable("msg") String msg) {
        return restTemplate.getForObject("http://" + providerOneName + "/providerOne/serviceOne/" + msg, String.class);
    }
    @HystrixCommand(fallbackMethod = "fallbackMethodOne")
    @RequestMapping("/serviceTwo/{msg}")
    public String serviceTwo(@PathVariable("msg") String msg) {
        return restTemplate.getForObject("http://" + providerOneName + "/providerOne/serviceOne/" + msg, String.class);
    }
    private String fallbackMethodOne(String msg) {
        return "熔斷一默認返回:" + msg;
    }
}

測試結果:

一個為等待5秒返回結果

一個正常返回

到此這篇關于SpringCloud集成Hystrix熔斷過程分步分解的文章就介紹到這了,更多相關SpringCloud Hystrix熔斷內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • idea在用Mybatis時xml文件sql不提示解決辦法(提示后背景顏色去除)

    idea在用Mybatis時xml文件sql不提示解決辦法(提示后背景顏色去除)

    mybatis的xml文件配置的時候,有時候會沒有提示,這讓我們很頭疼,下面這篇文章主要給大家介紹了關于idea在用Mybatis時xml文件sql不提示的解決辦法,提示后背景顏色去除的相關資料,需要的朋友可以參考下
    2023-03-03
  • 深入解析@InitBinder注解的功能與應用

    深入解析@InitBinder注解的功能與應用

    這篇文章主要介紹了深入解析@InitBinder注解的功能與應用,從字面意思可以看出這個的作用是給Binder做初始化的,被此注解的方法可以對WebDataBinder初始化,webDataBinder是用于表單到方法的數據綁定的,需要的朋友可以參考下
    2023-10-10
  • 基于Java實現簡單貪吃蛇游戲

    基于Java實現簡單貪吃蛇游戲

    這篇文章主要為大家詳細介紹了基于Java實現簡單貪吃蛇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • mybatis?實體類字段大小寫問題?字段獲取不到值的解決

    mybatis?實體類字段大小寫問題?字段獲取不到值的解決

    這篇文章主要介紹了mybatis?實體類字段大小寫問題?字段獲取不到值的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java 分行讀取實例

    java 分行讀取實例

    今天小編就為大家分享一篇java 分行讀取實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • IDEA創(chuàng)建Maven項目一直顯示正在加載的問題及解決

    IDEA創(chuàng)建Maven項目一直顯示正在加載的問題及解決

    這篇文章主要介紹了IDEA創(chuàng)建Maven項目一直顯示正在加載的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java構造方法的作用總結

    java構造方法的作用總結

    在本篇文章里小編給大家整理了關于java構造方法的相關知識點以及實例代碼,有需要的朋友們可以學習下。
    2019-07-07
  • 自己寫的簡易版Java日志類分享

    自己寫的簡易版Java日志類分享

    這篇文章主要介紹了自己寫的簡易版Java日志類分享,本文直接給出實現代碼,需要的朋友可以參考下
    2015-06-06
  • Java設計模式之策略模式定義與用法詳解

    Java設計模式之策略模式定義與用法詳解

    這篇文章主要介紹了Java設計模式之策略模式定義與用法,結合具體實例形式詳細分析了Java策略模式的概念、原理、定義及相關操作技巧,需要的朋友可以參考下
    2018-02-02
  • Java中BigInteger類的使用方法詳解(全網最新)

    Java中BigInteger類的使用方法詳解(全網最新)

    這篇文章主要介紹了Java中BigInteger類的使用方法詳解,常用最全系列,本章作為筆記使用,內容比較全面,但常用的只有:構造函數,基本運算以及compareTo(),intValue(),setBit(),testBit()方法,需要的朋友可以參考下
    2023-05-05

最新評論