精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

三種Sentinel自定義異常,你用過幾種?

開發 前端
Sentinel 有 3 種自定義異常的實現:自定義局部異常、自定義(Sentinel)全局異常、自定義系統異常。自定義局部異常作用范圍比較小,需要給每個資源單獨設置才行;而自定義全局異常作用范圍比較大,但如果是程序報錯,也不會執行其方法,所以需要配合系統異常同時來完成自定義異常的返回。

Spring Cloud Alibaba Sentinel 是目前主流并開源的流量控制和系統保護組件,它提供了強大的限流、熔斷、熱點限流、授權限流和系統保護及監控等功能。使用它可以輕松的保護我們微服務,在高并發環境下的正常運行。

那么,當程序觸發了限流和熔斷規則時,如何自定義返回的異常信息呢?這是我們接下來要解決的問題。

一、概述

Spring Cloud Alibaba Sentinel 有以下 3 種自定義異常的實現方式:

  • 自定義局部異常
  • 自定義(Sentinel)全局異常
  • 自定義系統異常

以上這 3 種實現方式,都可以重新定義 Sentinel 的異常返回信息,它們的具體實現如下。

二、自定義局部異常

自定義局部異常是在使用 @SentinelResource 注解時,直接定義的 blockHandler 異常方法,如下代碼所示:

@SentinelResource(value = "/user/getuser",
            blockHandler = "myBlockHandler")
@RequestMapping("getuser")
public String getUser(Integer uid) {
    return "User:" + uid;
}

/**
 * 定義限流/熔斷等異常
 */
public String myBlockHandler(Integer uid, BlockException e) {
    String msg = "未知異常";
    if (e instanceof FlowException) {
        msg = "請求被限流了";
    } else if (e instanceof ParamFlowException) {
        msg = "請求被熱點參數限流";
    } else if (e instanceof DegradeException) {
        msg = "請求被降級了";
    } else if (e instanceof AuthorityException) {
        msg = "沒有權限訪問";
    }
    return msg;
}

注意事項

在定義 blockHandler 方法時,需要注意以下 3 個問題:

  • 自定義的 blockHandler 方法的返回值,必須要和原方法(使用 @SentinelResource 注解修飾的方法)的返回值保持一致。
  • 自定義的 blockHandler 方法的參數必須和原方法參數保持一致。
  • 自定義的 blockHandler 方法的方法參數中必須包含 BlockException 參數。

如果不滿足以上事項中的任何一項,那么就不能正常匹配到自定義的 blockHandler 方法,并且程序也會報錯。

三、自定義全局異常

自定義 Sentinel 全局異常需要實現 BlockExceptionHandler 類,并重寫 handle 方法,如下代碼所示:

import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;

@Component
public class SentinelExceptionHandler implements BlockExceptionHandler {
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws Exception {
        String msg = "未知異常";
        int status = HttpStatus.TOO_MANY_REQUESTS.value();
        if (e instanceof FlowException) {
            msg = "請求被限流了";
        } else if (e instanceof ParamFlowException) {
            msg = "請求被熱點參數限流";
        } else if (e instanceof DegradeException) {
            msg = "請求被降級了";
        } else if (e instanceof AuthorityException) {
            msg = "沒有權限訪問";
            status = HttpStatus.UNAUTHORIZED.value();
        }
        response.setContentType("application/json;charset=utf-8");
        response.setStatus(status);
        response.getWriter().println("{\"msg\": " + msg + ", \"code\": " + status + "}");
    }
}

自定義 Sentinel 全局異常是在執行 Sentinel 控制臺設置的限流和熔斷異常時,執行的全局自定義異常方法。

但是,如果是程序中出現的 Sentinel 報錯信息,例如使用熱點限流時,因為要配合使用 @SentinelResource 注解時,此時只自定義了 value 屬性,未定義局部 blockHandler 方法,此時系統就會報錯,但這個時候并不會執行 Sentinel 全局自定義異常,而是程序報錯,此時就需要使用系統自定義異常來重新定義異常信息了。

四、自定義系統異常

自定義系統異常需要新建一個異常類,并且使用 @RestControllerAdvice 注解修飾此類,并配合 @ExceptionHandler 注解來完成全局系統異常的獲取和定義,具體實現代碼如下:

import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;
import java.util.Map;
@RestControllerAdvice
public class CustomExceptionHandler {

    /**
     * 限流全局異常
     */
    @ExceptionHandler(FlowException.class)
    public Map handlerFlowException(){
        return new HashMap(){{
            put("code", HttpStatus.TOO_MANY_REQUESTS.value());
            put("msg", "被限流");
        }};
    }

    /**
     * 熔斷全局異常
     */
    @ExceptionHandler(DegradeException.class)
    public Map handlerDegradeException(){
        return new HashMap(){{
            put("code", HttpStatus.TOO_MANY_REQUESTS.value());
            put("msg", "被熔斷");
        }};
    }

    /**
     * 熱點限流異常
     */
    @ExceptionHandler(ParamFlowException.class)
    public Map handlerparamFlowException(){
        return new HashMap(){{
            put("code", HttpStatus.TOO_MANY_REQUESTS.value());
            put("msg", "熱點限流");
        }};
    }

    /**
     *  Sentinel 權限攔截全局異常
     */
    @ExceptionHandler(AuthorityException.class)
    @ResponseBody
    public Map handlerAuthorityException(){
        return new HashMap(){{
            put("code", HttpStatus.UNAUTHORIZED.value());
            put("msg", "暫無權限");
        }};
    }
}

此時,只要是系統中出現的 Sentinel 報錯信息,都會被此方法所捕獲,并通過自定義的代碼完成自定義異常信息的返回。

小結

Sentinel 有 3 種自定義異常的實現:自定義局部異常、自定義(Sentinel)全局異常、自定義系統異常。自定義局部異常作用范圍比較小,需要給每個資源單獨設置才行;而自定義全局異常作用范圍比較大,但如果是程序報錯,也不會執行其方法,所以需要配合系統異常同時來完成自定義異常的返回。

PS:如果這 3 種自定義異常同時存在,那么它的執行優先級是:自定義局部異常 > 自定義全局異常 > 自定義系統異常。

責任編輯:姜華 來源: Java中文社群
相關推薦

2011-09-05 12:43:23

Sencha Touc事件

2011-12-16 14:23:51

Java

2024-10-30 16:39:45

2024-06-12 07:54:05

2022-02-14 22:04:50

瀏覽器Observer監聽

2009-12-03 10:49:32

PHP自定義異常處理器

2009-08-04 09:09:56

Java常見異常

2022-03-28 20:57:31

私有屬性class屬性和方法

2009-08-06 15:26:18

C#異常類型

2021-01-06 05:25:56

項目Springboot應用

2013-05-07 09:39:14

軟件定義網絡SDNOpenFlow

2024-01-17 13:58:00

算法C#冒泡排序

2021-12-15 23:10:34

JS Debugger 前端開發

2021-06-17 06:52:37

C#自定義異常

2021-10-10 12:29:27

機器人AI人工智能

2010-02-04 10:33:40

C++異常傳遞

2009-08-05 18:01:20

C#自定義異常處理

2020-09-07 09:54:01

GNOME桌面主題桌面應用

2019-07-22 13:39:59

Python編輯器開發

2019-04-30 10:00:59

CSS居中前端
點贊
收藏

51CTO技術棧公眾號

日韩欧美一二三四区| 美女精品在线| 日韩一区二区中文字幕| 日韩av高清在线看片| 欧美老女人性开放| 精品一区二区综合| 88国产精品欧美一区二区三区| 你懂的在线观看网站| 香蕉成人影院| 亚洲精品中文字幕乱码三区 | 亚洲精品tv| 亚洲国产另类av| 亚洲日本理论电影| 图片区 小说区 区 亚洲五月| 男女av一区三区二区色多| 久久艳片www.17c.com| 制服丝袜第二页| 精品视频一区二区三区在线观看| 一本一道波多野结衣一区二区| 丁香桃色午夜亚洲一区二区三区| 日韩亚洲欧美成人| 亚洲黄色在线网站| 国产精一区二区| 色综合天天天天做夜夜夜夜做| 老司机av福利| 韩国福利在线| av电影在线观看不卡| 成人久久一区二区三区| 日韩免费av网站| 亚洲精品国产一区二| 亚洲资源av| 欧美激情一区二区久久久| 正在播放国产一区| 久久国产精品 国产精品| 在线观看免费视频一区| 国产欧美精品| 久久免费视频在线观看| 91精品一区二区三区蜜桃| 国产欧美久久一区二区三区| 亚洲电影中文字幕| 中文字幕一二三| www.欧美视频| 欧美日韩国产一级片| wwwwww.色| 亚洲成人不卡| 在线国产亚洲欧美| 色婷婷综合久久久久中文字幕 | 国产日韩欧美精品一区| 精品国产日本| 十八禁一区二区三区| 福利91精品一区二区三区| 91视频88av| 国产又黄又猛又爽| 久久99精品一区二区三区| 国产精品在线看| 欧美在线视频精品| 日本女优在线视频一区二区| 国产精品成人一区二区| 精人妻无码一区二区三区| 美女诱惑一区| 国产aⅴ夜夜欢一区二区三区| 亚洲欧美综合另类| 久久成人在线| 国产精品露脸自拍| 一级α片免费看刺激高潮视频| 麻豆高清免费国产一区| 国产在线精品自拍| 国产伦理吴梦梦伦理| 国产毛片精品视频| 国产成人精品免费视频大全最热 | 国产婷婷色综合av蜜臀av| 在线天堂www在线国语对白| 久久99精品国产自在现线| 亚洲精品久久视频| 色哟哟精品观看| 成人羞羞网站| 欧美精品在线视频观看| 国产无套内射又大又猛又粗又爽| 亚洲黄网站黄| 国产经典一区二区| 国产精品一品二区三区的使用体验| 激情综合网av| 国产一区二区免费在线观看| 欧美男男激情freegay| 国产精品丝袜久久久久久app| 一区二区三区四区欧美| 欧美日韩经典丝袜| 色综合久久88色综合天天| 奇米影视四色在线| 成人在线tv视频| 在线a欧美视频| 麻豆视频在线观看| 国产亚洲在线观看| 国产日韩欧美在线播放| 成人午夜视频一区二区播放| 26uuu久久综合| 中国人体摄影一区二区三区| 牛牛在线精品视频| 欧美综合在线视频| 国产人妖在线观看| av一区二区在线观看| 久久91亚洲精品中文字幕奶水| 亚洲第一精品在线观看| 国产在线麻豆精品观看| 亚洲最色的网站| 动漫3d精品一区二区三区 | 国产成+人+日韩+欧美+亚洲| 国产精品三区四区| 五月婷婷在线视频| 污片在线观看一区二区| 中文字幕av专区| 久9re热视频这里只有精品| 久久激情视频免费观看| 青青草免费观看视频| 久久99精品国产.久久久久| 九九九九九九精品| 黄av在线免费观看| 91国偷自产一区二区三区观看 | 国产黄网在线观看| 国产成人激情av| 夜夜爽99久久国产综合精品女不卡 | 91欧美一区二区| 特级黄色录像片| 少妇精品视频一区二区免费看| 精品国产污网站| 污污的视频在线免费观看| 日韩精品一级中文字幕精品视频免费观看| 亚洲最大av在线| 午夜激情视频在线观看| 91国内精品野花午夜精品| 99re这里只有| 国产综合精品| 91青青草免费在线看| 在线观看二区| 欧美亚洲综合另类| 亚洲av成人精品日韩在线播放| 免费黄色成人| 九色成人免费视频| 中文字幕在线观看精品| 国产欧美一区二区三区网站| 少妇高潮喷水在线观看| 国产精品白浆| 久久久久久久色| 欧美连裤袜在线视频| 蜜桃视频在线观看www社区 | 日韩精品一区二区三区在线| 91久久精品国产| 日产精品久久久久久久性色| 亚洲午夜av在线| 波多野结衣三级视频| 91欧美日韩| 国产又爽又黄的激情精品视频| 超碰在线国产| 精品视频在线视频| 午夜黄色福利视频| 老司机免费视频一区二区三区| 欧美日韩在线精品一区二区三区| 一区二区乱码| 日韩av影院在线观看| 日韩免费黄色片| 91啪九色porn原创视频在线观看| 欧洲黄色一级视频| 亚洲调教一区| 国产精品视频一区国模私拍| 亚洲精品承认| 日韩一区二区三区av| 欧美黄色免费观看| 99麻豆久久久国产精品免费优播| 久操网在线观看| 天海翼亚洲一区二区三区| 91wwwcom在线观看| 成人影院免费观看| 91精品国产综合久久精品麻豆| 久草视频手机在线观看| 99久久久精品| 亚洲精品一二三四五区| 亚洲va在线| 国产经典一区二区三区| 欧美亚洲韩国| xxxxx91麻豆| 狠狠躁夜夜躁av无码中文幕| 岛国av一区二区三区| 91麻豆制片厂| 国产成人亚洲综合a∨猫咪| 国产精品无码av在线播放| 精品日本12videosex| 91亚洲va在线va天堂va国| 爱看av在线| 在线看福利67194| 国产高潮流白浆喷水视频| 丁香五六月婷婷久久激情| 欧美性猛交xxxx乱大交少妇| 国产精品亚洲第一| 国产精品第12页| 一区二区免费不卡在线| 久久婷婷开心| 精品国产第一国产综合精品| 68精品国产免费久久久久久婷婷| av网站在线免费播放| 日韩欧美中文一区| 不卡av电影在线| 亚洲曰韩产成在线| 一区二区三区久久久久| 高清日韩电视剧大全免费| 看欧美ab黄色大片视频免费| 亚洲视频一二| 在线国产精品网| 美女网站一区| 电影午夜精品一区二区三区 | 欧美日韩午夜视频在线观看| 免费中文字幕日韩| 久久亚洲私人国产精品va媚药| jizzzz日本| 男人的天堂亚洲| av在线com| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 欧美日韩国产在线播放网站| 亚欧洲精品在线视频| 综合久久久久久| 精品国产成人亚洲午夜福利| 成人性生交大片| 91人妻一区二区三区| 奇米一区二区三区| 欧美日韩在线不卡视频| 亚洲午夜在线| 亚洲成人动漫在线| 久久性感美女视频| 水蜜桃一区二区| 婷婷综合一区| 国产麻豆乱码精品一区二区三区 | 国产精品swag| 国产精品国产亚洲精品| 国产精品视频播放| 日韩免费小视频| 欧美在线观看网址综合| 欧美日韩在线视频免费观看| 麻豆乱码国产一区二区三区| 一级毛片视频在线| xxx成人少妇69| 免费高清完整在线观看| 中文字幕亚洲精品| 成人在线免费观看| 中文字幕在线亚洲| 在线免费观看黄色| 色偷偷亚洲男人天堂| 香蕉视频在线免费看| 最近2019年手机中文字幕| av女优在线| 色99之美女主播在线视频| a视频网址在线观看| 一区二区三区动漫| av在线播放av| 精品国产一区二区三区久久狼5月| 在线观看a视频| 久久精品色欧美aⅴ一区二区| 免费a级在线播放| 精品国产一区av| 性欧美ⅴideo另类hd| 午夜精品一区二区三区在线视 | 图片区日韩欧美亚洲| 日本一级黄色录像| 欧美日韩一区二区三区| 无码免费一区二区三区| 欧美三级资源在线| 国产永久免费视频| 亚洲综合色婷婷在线观看| 51久久夜色精品国产麻豆| 怡春院在线视频| 欧美日韩国产小视频在线观看| 就去色蜜桃综合| 2021年精品国产福利在线| 成人精品一二区| 精品综合久久88少妇激情| 欧美极品一区二区| 第一sis亚洲原创| 一级黄色免费在线观看| 欧美人成在线| 日韩av综合在线观看| 丝袜诱惑制服诱惑色一区在线观看| 精品少妇无遮挡毛片| 韩国三级中文字幕hd久久精品| 欧美性猛交xx| 91网站在线观看视频| youjizz亚洲女人| 一卡二卡欧美日韩| 六月丁香婷婷综合| 欧美日韩国产在线播放网站| 国产日韩精品在线看| 亚洲一区二区不卡免费| 黄网站免费在线| 色网站国产精品| 一区二区三区日| 亚洲风情亚aⅴ在线发布| 欧美中文在线| 久久精品视频亚洲| 欧美激情护士| 国产在线播放91| 清纯唯美亚洲经典中文字幕| 亚洲精品乱码久久久久久黑人 | 国产婷婷色一区二区三区在线| 色www亚洲国产阿娇yao| 亚洲综合男人的天堂| 不卡av电影在线| 亚洲成人黄色网址| 免费的黄网站在线观看| 欧美影院在线播放| 视频一区视频二区欧美| 秋霞毛片久久久久久久久| 欧美影院一区| 一区二区三区入口| 95精品视频在线| 国产成人综合在线视频| 欧美综合视频在线观看| 凸凹人妻人人澡人人添| 欧美成人精品xxx| 全球最大av网站久久| 精品国产一二| 精品成人在线| 性色av浪潮av| 国产精品久久久久四虎| 国产精品久久久久久久久久久久久久久久久| 在线播放/欧美激情| 国产在线观看网站| 91精品国产91久久| 91嫩草精品| 91xxx视频| 久久超碰97中文字幕| 一色道久久88加勒比一| 日韩国产在线一区| 24小时成人在线视频| 精品欧美一区二区精品久久| 亚洲视频电影在线| 午夜视频在线瓜伦| 91丨九色丨蝌蚪丨老版| 久草免费在线视频观看| 欧美精品vⅰdeose4hd| 超碰免费97在线观看| 538国产精品视频一区二区| 亚洲精品v亚洲精品v日韩精品| 亚洲精品一卡二卡三卡四卡| 丝袜亚洲另类欧美| 久久久久久久久久久久久久久| 丁香五六月婷婷久久激情| 少妇av在线播放| 性色av一区二区咪爱| 精品久久久无码中文字幕| 视频一区视频二区中文| 国产麻豆剧传媒精品国产| 亚洲欧美另类久久久精品| 国产视频第二页| 久久国产精品电影| 国产午夜亚洲精品一级在线| 亚洲视频电影| 韩国三级电影一区二区| 久草网在线观看| 亚洲福利视频专区| 在线观看涩涩| 成人免费视频caoporn| 五月天色婷婷丁香| 91麻豆精品国产| 性欧美videoshd高清| 99久久99久久| av成人天堂| 亚洲AV无码国产成人久久| 在线观看91精品国产入口| 97超碰人人在线| 91日本在线观看| 好吊视频一区二区三区四区| 制服丝袜在线第一页| 欧美日韩国产在线看| xxxxx日韩| 91免费在线视频网站| 欧美精品成人| 亚洲天堂成人av| 欧美色区777第一页| 黄色动漫在线观看| 九色综合日本| 久久精品国产**网站演员| 九九热最新地址| 亚洲国产欧美一区二区三区同亚洲| 欧美日韩电影免费看| 亚洲精品9999| 懂色av中文字幕一区二区三区| 午夜毛片在线观看| 日韩在线视频网站| 风间由美性色一区二区三区四区| 国产精品-区区久久久狼| 欧美国产日韩精品免费观看| 99国产精品99| 欧美中文在线观看| 欧美1级日本1级| 色哟哟精品观看| 欧美成人a在线| 日韩色淫视频| 男人c女人视频| 中文字幕免费不卡| 91女神在线视频| 波多野结衣有码| 欧美午夜一区二区三区| 主播国产精品|