目标: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上流控规则)
跳转降级界面测试
修改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
看到的效果如下:
下载链接:sentinel-sample2.rar
评论区