91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud中Hystrix服務降級與異常處理的方法是什么

發布時間:2021-12-07 11:55:11 來源:億速云 閱讀:174 作者:iii 欄目:大數據

本篇內容主要講解“Spring Cloud中Hystrix服務降級與異常處理的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring Cloud中Hystrix服務降級與異常處理的方法是什么”吧!

服務降級

前面兩篇文章中,fallbackMethod所描述的函數實際上就是一個備胎,用來實現服務的降級處理,在注解中我們可以通過fallbackMethod屬性來指定降級處理的方法名稱,在自定義Hystrix請求命令時我們可以通過重寫getFallback函數來處理服務降級之后的邏輯。使用注解來定義服務降級邏輯時,服務降級函數和@HystrixCommand注解要處于同一個類中,同時,服務降級函數在執行過程中也有可能發生異常,所以也可以給服務降級函數添加‘備胎’,如下:

@HystrixCommand(fallbackMethod = "error1")
public Book test2() {
    return restTemplate.getForObject("http://HELLO-SERVICE/getbook1", Book.class);
}

@HystrixCommand(fallbackMethod = "error2")
public Book error1() {
    //發起某個網絡請求(可能失敗)
    return null;
}
public Book error2() {
    return new Book();
}

在實際開發中,并不是所有的請求都要提前預備好服務降級問題,如果我就是要將服務調用失敗的信息展示給用戶,那么此時就沒有必要添加斷路器了。

異常處理

我們在調用服務提供者時有可能會拋異常,默認情況下方法拋了異常會自動進行服務降級,交給服務降級中的方法去處理,在自定義Hystrix請求命令的方式下,我們可以在getFallback方法中調用getExecutionException方法來獲取拋出的異常,舉個簡單的例子:

@Override
protected Book getFallback() {
    Throwable executionException = getExecutionException();
    System.out.println(executionException.getMessage());
    return new Book("宋詩選注", 88, "錢鐘書", "三聯書店");
}

@Override
protected Book run() throws Exception {
    int i = 1 / 0;
    return restTemplate.getForObject("http://HELLO-SERVICE/getbook1", Book.class);
}

此時訪問結果如下:

Spring Cloud中Hystrix服務降級與異常處理的方法是什么  

控制臺打印的日志如下:

Spring Cloud中Hystrix服務降級與異常處理的方法是什么  

自動進行了服務降級。

如果我們采用了注解的方式,只需要在服務降級方法中添加一個Throwable類型的參數就能夠獲取到拋出的異常的類型,如下:

@HystrixCommand(fallbackMethod = "error1")
public Book test2() {
    int i = 1 / 0;
    return restTemplate.getForObject("http://HELLO-SERVICE/getbook1", Book.class);
}

public Book error1(Throwable throwable) {
    System.out.println(throwable.getMessage());
    return new Book("百年孤獨", 33, "馬爾克斯", "人民文學出版社");
}

Spring Cloud中Hystrix服務降級與異常處理的方法是什么  

控制臺打印的日志也是/ by zero,我就不再貼圖片了。此時,如果有一個異常拋出后我不希望進入到服務降級方法中去處理,而是直接將異常拋給用戶,那么我們可以在@HystrixCommand注解中添加忽略異常,如下:

@HystrixCommand(fallbackMethod = "error1",ignoreExceptions = ArithmeticException.class)
public Book test2() {
    int i = 1 / 0;
    return restTemplate.getForObject("http://HELLO-SERVICE/getbook1", Book.class);
}

public Book error1(Throwable throwable) {
    System.out.println(throwable.getMessage());
    return new Book("百年孤獨", 33, "馬爾克斯", "人民文學出版社");
}

此時執行結果如下:

Spring Cloud中Hystrix服務降級與異常處理的方法是什么  

這里的實現原理很簡單,因為有一個名叫HystrixBadRequestException的異常不會進入到服務降級方法中去,當我們定義了ignoreExceptions為ArithmeticException.class之后,當拋出ArithmeticException異常時,Hystrix會將異常信息包裝在HystrixBadRequestException里邊然后再拋出,此時就不會觸發服務降級方法了。

到此,相信大家對“Spring Cloud中Hystrix服務降級與異常處理的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

科技| 新郑市| 玉林市| 娱乐| 五华县| 茶陵县| 资溪县| 左权县| 叙永县| 上蔡县| 澄城县| 定南县| 筠连县| 穆棱市| 新密市| 凤山县| 桃园县| 霍州市| 巢湖市| 灌南县| 乌审旗| 崇礼县| 刚察县| 白水县| 安仁县| 九江市| 保德县| 宁武县| 东源县| 连云港市| 乐昌市| 肥城市| 七台河市| 玛沁县| 赣州市| 阿拉善右旗| 保定市| 韶关市| 岫岩| 北票市| 岑溪市|