1 添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
2 配置application.yml文件
spring:
application:
name: xinwenApp
cloud:
sentinel:
transport:
# 配置Sentinel 控制台 地址
dashboard: 127.0.0.1:8080
# 应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用的HttpServer
# 默认8719端口,假如端口被占用,依次+1,直到找到未被占用端口
port: 8719
server:
port: 7777
3 编写Controller和被限流,降级的方法
package cn.huawei.controller;
import cn.huawei.pojo.Yonghu;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller_2 {
/**
* 注解方式定义资源
*
* @return
* @SentinelResource value 资源名称
* @SentinelResource blockHandler 调用被限流/降级/系统保护的时候调用的方法
*/
@SentinelResource(value = "ziyuan_1", blockHandler = "blockHandler_method_1")
@RequestMapping("getuser")
public Object fangfa_1() {
Yonghu user_1 = new Yonghu(1, "zhangshan_" + System.currentTimeMillis(), "男", 23, "湖南");
return user_1;
}
/**
* 原方法调用被限流/降级/系统保护的时候调用
*/
public String blockHandler_method_1(BlockException ex) {
ex.printStackTrace();
return "系统繁忙,请稍后!";
}
}
4 启动应用,先访问一次controller,让sentinel可以识别,再打开sentinel控制台,配置限流规则
5 开始测试,访问 http://localhost:7777/getuser
慢慢刷新,可正常访问,如果访问非常频繁,就会被限流,显示 "系统繁忙...."