折腾了半天终于大功告成,现在把重要的地方记录下来,希望帮到有需要的开发者:
1.添加三个依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- alibaba-sentinel -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
</dependency>
关于spring-cloud-alibaba-dependencies的版本一定要特别注意,springboot2.0以下建议用0.1.2.RELEASE等其他较低版本,否则启动会报错
2.增加一个configuration类
@Configuration
public class AspectConfiguration {
@Bean
public SentinelResourceAspect sentinelResourceAspect() {
return new SentinelResourceAspect();
}
}
3.在application.proerties增加配置
#Sentinel 控制台地址
spring.cloud.sentinel.transport.dashboard=localhost:9010
#取消Sentinel控制台懒加载
spring.cloud.sentinel.eager=true
spring.cloud.sentinel.transport.heartbeat-interval-ms=2000 //该值设置影响到sentinel-dashboard的配置什么时候被更新到客户端
spring.cloud.sentinel.transport.client-ip=127.0.0.1
public String blockHandler(HttpServletRequest req,BlockException ex) {
//可以记录日志,返回任何你想返回的东西
return "请放慢速度";
}
@GetMapping("/device")
@SentinelResource(value="restApi-device",blockHandler="blockHandler")
public String getDevice(HttpServletRequest req)
4.运行sentinel-dashboard(https://github.com/alibaba/Sentinel/releases)
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar target/sentinel-dashboard.jar
运行效果图:
参考文章:
1.https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard