精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美动物xxx| 亚洲精品国产片| 欧美激情国产在线| 欧美成人午夜电影| 69堂免费视频| 最近高清中文在线字幕在线观看| 麻豆精品在线播放| 欧美激情精品久久久久久大尺度 | 国产又大又粗又长| 极品少妇一区二区三区| 在线亚洲午夜片av大片| 95视频在线观看| 日韩黄色在线| 欧美日韩午夜视频在线观看| 日韩国产精品毛片| 美州a亚洲一视本频v色道| 国产成人综合在线播放| 国产精品久久婷婷六月丁香| 韩国av免费观看| 91精品综合| 中文字幕精品久久| 国产美女喷水视频| 在线观看视频一区二区三区| 欧美日韩精品一区二区三区| 草草久久久无码国产专区| av官网在线播放| 国产精品视频第一区| 激情欧美一区二区三区中文字幕| 国产青青草视频| 蜜芽一区二区三区| 国产va免费精品高清在线观看| 精品无码人妻一区二区三区品 | 久久免费偷拍视频| 国产精品有限公司| 国产偷拍一区二区| 久久99精品国产| 国产精品女视频| 亚洲 欧美 日韩 在线| 日韩午夜一区| 韩国美女主播一区| 国产精品日日夜夜| 欧美激情四色| 欧美第一黄色网| 青青草偷拍视频| 欧美电影一二区| 色偷偷亚洲男人天堂| 免费看的黄色网| 精品色999| 这里只有视频精品| 免费成人深夜天涯网站| 精品日本12videosex| 中文字幕日韩在线视频| 国产真人真事毛片视频| 波多野结衣在线观看一区二区三区| 亚洲免费av片| 免费在线观看a视频| 精品午夜久久| www亚洲欧美| 日韩福利小视频| 雨宫琴音一区二区三区| 欧美日韩国产91| 久久久久久久99| 亚洲欧美网站| 国产精品福利网站| 国产精品九九九九| 激情小说亚洲一区| 99久久99| 日本中文字幕电影在线观看 | 亚洲成人午夜在线| 午夜免费视频在线国产| 亚洲色大成网站www久久九九| 法国空姐在线观看免费| 国产美女一区视频| 欧美性猛交xxx| 伊人国产在线视频| 99re91这里只有精品| 日韩精品在线电影| 99精品全国免费观看| 欧美1级日本1级| 97色在线播放视频| 最近中文字幕在线免费观看| 国产在线一区二区| 国产在线精品一区| 成人77777| 一区2区3区在线看| 毛片一区二区三区四区| 国产精品欧美一区二区三区不卡| 精品国产一区二区三区av性色| 中文乱码人妻一区二区三区视频| 精品国产乱码久久久| 免费91麻豆精品国产自产在线观看| 国产精品 欧美 日韩| 老司机免费视频久久| 亚洲一区二区三区在线视频| 爽爽视频在线观看| 亚洲丝袜自拍清纯另类| 日韩久久一级片| 韩国三级大全久久网站| 亚洲欧美日韩精品久久奇米色影视| 欧美性生给视频| 国产一区白浆| 99re在线播放| 91啦中文在线| 欧美日韩一区二区精品| 国产探花在线观看视频| 蜜臀久久99精品久久一区二区| 久久婷婷国产麻豆91天堂| 91video| 国产福利一区二区三区在线视频| 欧美日韩国产综合视频在线| 先锋影音在线资源站91| 欧美性xxxxxx少妇| 日韩av一二区| 亚洲午夜极品| 91在线视频九色| 韩日在线视频| 欧美日韩另类视频| 欧美性猛交乱大交| 国产精品久久占久久| 国产成人精品久久亚洲高清不卡| www.国产三级| 中文字幕欧美一区| 国产又大又黄又粗的视频| 美女扒开腿让男人桶爽久久动漫| 久久夜色精品国产| 国产一区二区三区三州| 国产欧美精品国产国产专区| 国产老熟妇精品观看| 中文字幕日韩高清在线| 久久精品国产亚洲| 免费av中文字幕| 久久影院午夜论| 国产午夜伦鲁鲁| 国产伦理久久久久久妇女 | 亚洲色图日韩av| 99久在线精品99re8热| 成人免费三级在线| www污在线观看| 91嫩草精品| 欧美激情xxxxx| 国产91免费看| 亚洲不卡av一区二区三区| 苍井空张开腿实干12次| 欧美精品综合| 亚洲xxxx在线| av网站免费在线观看| 日韩视频一区二区三区| 国产十六处破外女视频| 国产成人av电影| 久久久久久久香蕉| 动漫视频在线一区| 1769国内精品视频在线播放| 亚州av在线播放| 欧美性开放视频| 日本美女xxx| 久久国产人妖系列| 成人手机在线播放| 红杏视频成人| …久久精品99久久香蕉国产| 精品美女视频在线观看免费软件 | 亚洲中文字幕久久精品无码喷水| 国产99久久久国产精品成人免费| 国产成人精品视频在线观看| 91大神在线网站| 91麻豆精品国产自产在线| 美国黄色小视频| 成年人国产精品| 国产无套内射久久久国产| 欧美最新另类人妖| 91久久精品美女高潮| 美女精品导航| 亚洲欧美自拍一区| 91福利在线观看视频| 亚洲综合丁香婷婷六月香| 国产艳俗歌舞表演hd| 久久精品国产久精国产| 日本wwwcom| 大片网站久久| 91影院在线免费观看视频| 91美女精品| 一本一本久久a久久精品牛牛影视| 国产原创中文av| 亚洲午夜羞羞片| 国产肥白大熟妇bbbb视频| 久久成人久久爱| 日韩免费一级视频| 99久久亚洲精品蜜臀| 国产日韩精品推荐| 日韩欧国产精品一区综合无码| 欧美激情免费观看| 91高清在线| 日韩精品在线看| av网站免费大全| 色94色欧美sute亚洲线路一久 | 亚洲在线一区二区| 暖暖成人免费视频| 久久久久亚洲精品| 中文字幕在线免费| 日韩成人久久久| 国产露脸91国语对白| 欧美性生交大片免费| 欧美精品色哟哟| 国产欧美一区二区精品性| 亚洲成年人av| 经典三级在线一区| 91国产精品视频在线观看| 精久久久久久| 亚洲综合激情五月| 欧美日韩有码| 九九九久久久| 粉嫩av一区二区| 国产在线a不卡| 亚洲四虎影院| 欧美一二三视频| 国产探花视频在线观看| 久久最新资源网| 午夜免费视频在线国产| 在线播放国产一区二区三区| 香港三日本三级少妇66| 精品国内片67194| 999av视频| 欧美精品粉嫩高潮一区二区| 欧美成人一区二区视频| 色激情天天射综合网| 国产香蕉视频在线| 亚洲国产精品久久人人爱蜜臀| 黄色aaaaaa| 亚洲tv在线| 国产v综合v亚洲欧美久久| 91破解版在线观看| 久久av在线播放| 欧美日韩1080p| 免费h精品视频在线播放| 欧美国产亚洲精品| 欧美www视频| 成年人网站免费在线观看| 国产伦精品一区二区三区免费| 免费日韩视频在线观看| 久久电影一区| 黄色免费视频大全| 一本不卡影院| jizzjizz国产精品喷水| 亚洲毛片一区| 国产精品二区一区二区aⅴ| 青草av.久久免费一区| www..com日韩| 激情久久综合| 成人性免费视频| 影音先锋久久精品| 国产黄色片免费在线观看| 亚洲无吗在线| 国产成人精品视频免费看| 国产精品久久久久久久久久妞妞| 精品这里只有精品| 欧美亚洲一级| 天天夜碰日日摸日日澡性色av| 91久久综合| 日韩av资源在线| 日韩黄色免费电影| www.这里只有精品| 国产精品99久久久久久久女警| 能看毛片的网站| 成人网男人的天堂| 人人妻人人澡人人爽人人精品| 久久久三级国产网站| 91麻豆制片厂| 一区二区三区精品视频| 日本三级视频在线| 色噜噜偷拍精品综合在线| 在线播放一级片| 日韩手机在线导航| 五月婷婷激情在线| 中文字幕一区二区精品| 在线中文字幕电影| 成人视屏免费看| 亚洲av无码一区二区三区人| 国产精品三级av| 久久久久成人精品无码| 欧美视频专区一二在线观看| 伊人色综合久久久| 精品久久久久久亚洲综合网 | 都市激情亚洲一区| 国产专区欧美专区| 久久久伦理片| 亚洲精品中字| 99成人在线| 91精品视频国产| 91麻豆精品秘密| 成人涩涩小片视频日本| 精品久久久久久中文字幕| 在线免费观看一级片| 亚洲精品大尺度| 超碰超碰在线| 国产精品激情自拍| 国产精品久久久网站| 正在播放精油久久| 久久99伊人| 国产大尺度视频| 国产精品免费看片| 特级西西444www大精品视频免费看| 91麻豆精品国产91久久久久久| 丝袜+亚洲+另类+欧美+变态| 精品中文字幕视频| 欧美一级做一级爱a做片性| 精品在线不卡| 欧美午夜一区| 777一区二区| 国产欧美综合色| 一级免费在线观看| 日韩欧美国产小视频| 免费人成在线观看播放视频 | av在线免费观看国产| 麻豆91在线播放| 国产精品毛片一区二区| 午夜视频在线观看一区| 国产成人三级一区二区在线观看一| 亚洲一区二区黄| 嗯啊主人调教在线播放视频 | 91av成人在线| 91亚洲无吗| 亚洲av综合色区| 久久成人久久鬼色| 女人裸体性做爰全过| 欧美自拍丝袜亚洲| 毛片在线播放网址| 51色欧美片视频在线观看| 亚洲视频国产精品| 好吊色视频988gao在线观看| 精品亚洲成a人在线观看| 国产熟女一区二区| 在线区一区二视频| 国产精品视频二区三区| 国产精品夫妻激情| 色琪琪久久se色| 欧美午夜aaaaaa免费视频| 久久久www免费人成精品| 狠狠人妻久久久久久| 精品一区电影国产| 91久久国产综合久久91猫猫| 六月婷婷久久| 视频在线观看国产精品| 亚洲成人黄色av| 在线视频欧美精品| av在线免费一区| 国产欧美久久久久久| 欧美freesextv| 国产农村妇女精品久久| 亚洲精品少妇30p| 成人无码一区二区三区| 韩国福利视频一区| 亚洲精品成人悠悠色影视| 欧美a视频在线观看| 亚洲毛片在线看| 韩国成人在线| 亚洲视频小说| 国产一区二区三区在线看麻豆| 久久精品亚洲a| 制服丝袜亚洲色图| 欧美大片黄色| 久久偷窥视频| 蜜桃av一区二区在线观看 | 国产高清在线| 国产精品成人一区| 偷拍欧美精品| 看全色黄大色黄女片18| 一本一道综合狠狠老| 国产精品二线| 亚洲自拍av在线| 99综合精品| 国产免费嫩草影院| 精品欧美乱码久久久久久1区2区| 福利影院在线看| 日韩高清dvd| 国产精品一二三在| 国偷自拍第113页| 少妇激情综合网| 91欧美极品| 亚洲免费av一区二区三区| 亚洲激情网站免费观看| 五月婷婷免费视频| 国产在线视频一区| 亚洲精选91| 五月天免费网站| 亚洲第一免费播放区| 日韩欧美2区| 日韩欧美不卡在线| 国产精品第13页| 水中色av综合| 99c视频在线| 日本怡春院一区二区| 久久久久久久久久久久久久久久久| 亚洲欧美福利视频| 国色天香久久精品国产一区| 日韩中文字幕免费在线| 一区二区三区四区亚洲| 成人免费高清在线播放| 好吊妞www.84com只有这里才有精品| 欧美丰满熟妇bbbbbb百度| 国产一在线精品一区在线观看| 日本一区二区三区网站|