1、 添加依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>lemon-alibaba</artifactId>
<groupId>com.lemon.alibaba</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>lemon-alibaba-sentinel</artifactId>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
</dependencies>
</project>
2、修改配置:
server:
port: 13000
spring:
application:
name: lemon-alibaba-sentinel
cloud:
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
sentinel:
transport:
dashboard: 127.0.0.1:8080 #sentinel控制台地址
3、启动sentinel-dashboard.jar 程序
4、在sentinel控制台中对资源进行流控、降级等规则的设置,设置之后实时生效
5、自定义流控解决方案:
默认sentinel给出的返回值不符合我们的要求,所以需要自定义实现返回规则。
自定义的返回规则与sentinel单独配置的时候是一样的使用方法,
package com.lemon.alibaba.sentinel.conntroller;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/ali-sentinel")
public class IndexController {
@GetMapping("/index")
@SentinelResource(value = "index",blockHandler = "flowBlockHander")
public String index(){
return "index";
}
public String flowBlockHander(BlockException ex){
ex.printStackTrace();
return "flow exceeption";
}
}