最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Sentinel自定義返回和實(shí)現(xiàn)區(qū)分來(lái)源方式

 更新時(shí)間:2025年04月02日 16:43:50   作者:Gangbb  
這篇文章主要介紹了使用Sentinel自定義返回和實(shí)現(xiàn)區(qū)分來(lái)源方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Sentinel自定義返回和實(shí)現(xiàn)區(qū)分來(lái)源

1. 自定義錯(cuò)誤返回

因?yàn)榱骺睾徒导?jí)頁(yè)面報(bào)的異常都是相同的,所以可以優(yōu)化一下。

使用官方的接口BlockExceptionHandler(2.2.7.RELEASE)、UrlBlockHandler(0.9.0.RELEASE)

定義處理類:

@Component
public class MyUrlBlockHandler implements BlockExceptionHandler {

    @Override
    public void handle(HttpServletRequest httpServletRequest, HttpServletResponse response, BlockException ex) throws Exception {
        ErrorMsg msg = null;
        if (ex instanceof FlowException) {
            msg = ErrorMsg.builder()
                    .status(100)
                    .msg("限流了")
                    .build();
        } else if (ex instanceof DegradeException) {
            msg = ErrorMsg.builder()
                    .status(101)
                    .msg("降級(jí)了")
                    .build();
        } else if (ex instanceof ParamFlowException) {
            msg = ErrorMsg.builder()
                    .status(102)
                    .msg("熱點(diǎn)參數(shù)限流")
                    .build();
        } else if (ex instanceof SystemBlockException) {
            msg = ErrorMsg.builder()
                    .status(103)
                    .msg("系統(tǒng)規(guī)則(負(fù)載/...不滿足要求)")
                    .build();
        } else if (ex instanceof AuthorityException) {
            msg = ErrorMsg.builder()
                    .status(104)
                    .msg("授權(quán)規(guī)則不通過(guò)")
                    .build();
        }
        // http狀態(tài)碼
        response.setStatus(500);
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-Type", "application/json;charset=utf-8");
        response.setContentType("application/json;charset=utf-8");
        // spring mvc自帶的json操作工具,叫jackson
        new ObjectMapper()
                .writeValue(
                        response.getWriter(),
                        msg
                );
    }
}

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
class ErrorMsg {
    private Integer status;
    private String msg;
}

效果:

2. 實(shí)現(xiàn)區(qū)分來(lái)源

使用RequestOriginParser接口

@Component
public class MyRequestOriginParser implements RequestOriginParser {
    @Override
    public String parseOrigin(HttpServletRequest request) {
        // 從請(qǐng)求參數(shù)中獲取名為 origin 的參數(shù)并返回
        // 如果獲取不到origin參數(shù),那么就拋異常

        String origin = request.getParameter("origin");
        if (StringUtils.isBlank(origin)) {
            throw new IllegalArgumentException("origin must be specified");
        }
        return origin;
    }
}

訪問:http://127.0.0.1:8010/shares/1

控制臺(tái):

加上參數(shù)就可以了:

新加授權(quán)規(guī)則

再訪問就不行了:

新增流控規(guī)則

換個(gè)名字就不會(huì)被限流

真實(shí)項(xiàng)目中一般把需要的參數(shù)放在請(qǐng)求header

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • httpclient的disableConnectionState方法工作流程

    httpclient的disableConnectionState方法工作流程

    這篇文章主要為大家介紹了httpclient的disableConnectionState方法工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • MyBatis-Plus更新對(duì)象時(shí)將字段值更新為null的四種常見方法

    MyBatis-Plus更新對(duì)象時(shí)將字段值更新為null的四種常見方法

    MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在簡(jiǎn)化開發(fā)、提高效率方面表現(xiàn)非常出色,而,在使用 MyBatis-Plus 更新對(duì)象時(shí),默認(rèn)情況下是不會(huì)將字段值更新為 null 的,如果你需要將某些字段的值更新為 null,有幾種方法可以實(shí)現(xiàn),本文將介紹幾種常見的方法
    2024-11-11
  • 推薦幾款非常實(shí)用的IDEA插件小結(jié)

    推薦幾款非常實(shí)用的IDEA插件小結(jié)

    這篇文章主要介紹了推薦幾款非常實(shí)用的IDEA插件小結(jié),解決你開發(fā)中可望而又不好找的插件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Springboot mybatisplus如何解決分頁(yè)組件IPage失效問題

    Springboot mybatisplus如何解決分頁(yè)組件IPage失效問題

    這篇文章主要介紹了Springboot mybatisplus如何解決分頁(yè)組件IPage失效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解大數(shù)據(jù)處理引擎Flink內(nèi)存管理

    詳解大數(shù)據(jù)處理引擎Flink內(nèi)存管理

    Flink是jvm之上的大數(shù)據(jù)處理引擎,jvm存在java對(duì)象存儲(chǔ)密度低、full gc時(shí)消耗性能,gc存在stw的問題,同時(shí)omm時(shí)會(huì)影響穩(wěn)定性。針對(duì)頻繁序列化和反序列化問題flink使用堆內(nèi)堆外內(nèi)存可以直接在一些場(chǎng)景下操作二進(jìn)制數(shù)據(jù),減少序列化反序列化消耗。本文帶你詳細(xì)理解其原理。
    2021-05-05
  • java線程池ThreadPoolExecutor實(shí)現(xiàn)原理詳解

    java線程池ThreadPoolExecutor實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了java線程池ThreadPoolExecutor實(shí)現(xiàn)原理詳解,ThreadPoolExecutor是線程池實(shí)現(xiàn)類,會(huì)動(dòng)態(tài)創(chuàng)建多個(gè)線程,并發(fā)執(zhí)行提交的多個(gè)任務(wù),需要的朋友可以參考下
    2023-12-12
  • JDK1.8下載、安裝和環(huán)境配置超詳細(xì)教程(最新最完整)

    JDK1.8下載、安裝和環(huán)境配置超詳細(xì)教程(最新最完整)

    jdk1.8是一款功能強(qiáng)大的Java語(yǔ)音軟件開發(fā)工具包,JDK是學(xué)好Java的第一步,本文重點(diǎn)給大家介紹JDK1.8下載、安裝和環(huán)境配置教程,需要的朋友可以參考下
    2022-11-11
  • Java實(shí)現(xiàn)數(shù)組反轉(zhuǎn)翻轉(zhuǎn)的方法實(shí)例

    Java實(shí)現(xiàn)數(shù)組反轉(zhuǎn)翻轉(zhuǎn)的方法實(shí)例

    本篇文章主要介紹了Java實(shí)現(xiàn)數(shù)組反轉(zhuǎn)翻轉(zhuǎn)的方法實(shí)例,詳細(xì)的介紹了3種實(shí)現(xiàn)方法,有興趣的可以了解一下。
    2017-04-04
  • 如何基于SpringWeb?MultipartFile實(shí)現(xiàn)文件上傳、下載功能

    如何基于SpringWeb?MultipartFile實(shí)現(xiàn)文件上傳、下載功能

    在做項(xiàng)目時(shí),后端經(jīng)常采用上傳文件組件MultipartFile,下面這篇文章主要給大家介紹了關(guān)于如何基于SpringWeb?MultipartFile實(shí)現(xiàn)文件上傳、下載功能的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • java Timer測(cè)試定時(shí)調(diào)用及固定時(shí)間執(zhí)行代碼示例

    java Timer測(cè)試定時(shí)調(diào)用及固定時(shí)間執(zhí)行代碼示例

    這篇文章主要介紹了java Timer測(cè)試定時(shí)調(diào)用及固定時(shí)間執(zhí)行代碼示例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

微博| 满城县| 凤冈县| 玉田县| 正定县| 托克托县| 鄂托克旗| 齐齐哈尔市| 拉萨市| 平安县| 民丰县| 达州市| 宣恩县| 苏尼特左旗| 娄烦县| 三穗县| 安仁县| 东乌珠穆沁旗| 安达市| 神木县| 郯城县| 涞水县| 乡城县| 崇明县| 边坝县| 卓资县| 揭阳市| 拜城县| 宣城市| 雷山县| 清原| 福建省| 广元市| 和顺县| 万年县| 武安市| 永嘉县| 荣昌县| 洛隆县| 乡宁县| 双鸭山市|