@SentinelResource注解中blockHandler与fallback属性详解


一。介绍

Sentinel管控台结合@SentinelResource注解来实现服务限流以及熔断降级功能。

  • blockHandler只负责sentinel控制台配置违规
  • fallback只负责业务异常

二。只配置blockHandler

1.单个blockHandler限流降级处理方法配置

这里主要介绍如何在控制器中自定义单个或者多个限流降级处理方法。

控制器示例代码如下:
在这里插入图片描述

sentinel配置流控规则如下:
注:狭义来说,若该资源名不带"/",则说明的该资源名为@SentinelResourcevalue属性的值
在这里插入图片描述
当我们一秒一次点击时,不触发限流降级:
在这里插入图片描述
当我们快速点击刷新时,超过流控阈值,触发限流降级,调用自定义限流降级方法:
在这里插入图片描述

2.blockHandlerClass限流降级处理类配置

为了提高代码的可读性以及解耦,我们将自定义的限流降级方法专门写入到一个限流降级类中,需要时再进行调用。

限流降级处理类代码如下:
注:所有的方法均为static静态方法,参数必须带上BlockException exception,否则找不到相应方法

package com.example.sentinel_8401.blockHandlerClass;

import com.alibaba.csp.sentinel.slots.block.BlockException;

/**
 * @Description:sentinel限流降级处理类
 * 所有的方法均为static静态方法,参数必须带上BlockException exception,否则找不到相应方法
 * @Author :zks
 * @Date :14:12 2021/2/2
 */
public class BlockHandler {

    public static String blockHandlerA(BlockException exception){
        return "这是第一个限流降级方法";
    }

    public static String blockHandlerB(BlockException exception){
        return "这是第二个限流降级方法";
    }
}

控制器示例代码如下:
在这里插入图片描述

sentinel配置流控规则分别如下:
在这里插入图片描述
在这里插入图片描述

当我们一秒一次点击时,不触发限流降级:
在这里插入图片描述
在这里插入图片描述

当我们快速点击刷新时,超过流控阈值,触发限流降级,调用自定义限流降级方法:
在这里插入图片描述
在这里插入图片描述

三。只配置fallback

1.单个fallback熔断降级处理方法配置

这里主要介绍如何在控制器中自定义单个或者多个熔断降级处理方法。

控制器示例代码如下:
在这里插入图片描述

当我们调用接口,接口后台异常,触发熔断降级,调用自定义熔断降级方法:
在这里插入图片描述

2.blockHandlerClass限流降级处理类配置

为了提高代码的可读性以及解耦,我们将自定义的熔断降级方法专门写入到一个熔断降级类中,需要时再进行调用。

熔断降级处理类代码如下:

package com.example.sentinel_8401.fallback;

import com.alibaba.csp.sentinel.slots.block.BlockException;

/**
 * @Description:sentinel熔断降级处理类
 * @Author :zks
 * @Date :16:17 2021/2/2
 */
public class Fallback {
    
    

    public static String fallbackA(){
    
    
        return "这是第一个熔断降级方法";
    }

    public static String fallbackB(){
    
    
        return "这是第二个熔断降级方法";
    }
}

控制器示例代码如下:
在这里插入图片描述
当我们调用接口,接口后台异常,触发熔断降级,调用自定义熔断降级类中的方法:
在这里插入图片描述
在这里插入图片描述

四。blockHandler和fallback都配置

1.控制器代码示例如下:
在这里插入图片描述
2.配置sentinel流控规则:
在这里插入图片描述
3.当测试一秒点击一次没有超过流控阈值时,一直调用自定义熔断降级方法:
在这里插入图片描述
4.当测试快速点击超过流控阈值时,一直调用自定义限流降级方法:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44009447/article/details/113559275