首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sentinel——自定义URL限流异常

Sentinel——自定义URL限流异常

作者头像
背雷管的小青年
发布2020-06-16 10:21:20
5.3K10
发布2020-06-16 10:21:20
举报

目标:Sentinel的基本应用 工具:IDEA--2020.1、Sentinel Maven 学习目标:学习Sentinel的自定义URL限流异常 本次学习的工程下载链接放到文本最后面

1.Sentinel在默认情况下,URL触发限流后会直接返回。

Blocked by Sentinel (flow limiting)

2.我们一般都是在应用中用json传递数据,所以我们如果希望修改触发限流之后返回的结果形式,就可以通过自定义限流异常来处理,实现UrlBlockHandler并且重写blocked方法

@Service
public class CustomUrlBlockHandler implements UrlBlockHandler {
    @Override
    public void blocked(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws IOException {
        httpServletResponse.setHeader("Content-Type","application/json;charset=UTF-8");
        String message = "{\"code\":999,\"msg\":\"访问人数过多\"}";
        //如果加了转义符号看不明白
        //使用类创建就json对象
        httpServletResponse.getWriter().write(message);
    }
}

或者是触发限流后我们希望跳转到其他界面(降级界面)我们可以配置spring.cloud.sentinel.servlet.block-page={url}来实现

接下来我们访问一下我们的dash资源(记得重新给我们的Sentinel Dashboard上流控规则)

HL9)XSGUU)0E7BW9$X287DW.png
HL9)XSGUU)0E7BW9$X287DW.png

跳转降级界面测试

修改application中的文件为:

spring:
  application:
    name: springboot-sentinel-sample
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:7777
      servlet:
        block-page: /goerror

在DashboardController控制器里面加一个接口

@GetMapping("/goerror")
private String error(){
    return "error";
}

我们先把我们的我们自定义限流异常给注释掉,加上我们的降级跳转界面(记得重新给我们的Sentinel Dashboard上流控规则)。

多刷新几次这个界面 http://localhost:8080/dash 看到的效果如下:

0944@K5)U6T6OW$HBNH}S02.png
0944@K5)U6T6OW$HBNH}S02.png

下载链接:sentinel-sample2.rar

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Sentinel在默认情况下,URL触发限流后会直接返回。
  • 2.我们一般都是在应用中用json传递数据,所以我们如果希望修改触发限流之后返回的结果形式,就可以通过自定义限流异常来处理,实现UrlBlockHandler并且重写blocked方法
  • 接下来我们访问一下我们的dash资源(记得重新给我们的Sentinel Dashboard上流控规则)
  • 跳转降级界面测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档