简介
Sentinel 提供了 @SentinelResource 注解用于定义受保护资源,默认对所有Controller的请求处理Handler都拦截为需要保护的资源,只需要配置限流等规则即可。并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。
其使用非常简单,参考官方文档即可正确使用@SentinelResource,参考官方文档资料如下:
官方文档:https://github.com/alibaba/Sentinel/wiki/%E6%B3%A8%E8%A7%A3%E6%94%AF%E6%8C%81
实现
1.新建GlobalFallback.java 作为全局fallback处理类,并统一返回JSON fallback信息
package com.vincent.controller;
import java.util.HashMap;
import java.util.Map;
public class GlobalFallback {
public static Object defaultFallback(Throwable e){
Map<String,Object> rst = new HashMap<>();
rst.put("exception",e.getClass());
rst.put("timestamp",System.currentTimeMillis());
return rst;
}
}
2.service-consumer模块使用@SentinelResource 标注方法
@GetMapping("/info")
@SentinelResource(value = "info",fallbackClass = GlobalFallback.class,defaultFallback = "defaultFallback")
public Object info(){
return System.currentTimeMillis();
}
3.Sentinel 控制台配置流控
4.正常访问http://localhost:8020/consumer/info
触发流控规则访问