在6、 Spring Cloud Alibaba整合Sentinel项目的controller中修改:
package com.example.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/order")
public class OrderController {
@RequestMapping("/add")
public String add(){
System.out.println("下单成功");
return "Hello World ";
}
@RequestMapping("/flow")
public String flow(){
return "正常访问";
}
}
重启
访问:http://localhost:8088/order/flow
通过sentinel控制台设置流控的QPS
然后再一秒内访问:http://localhost:8088/order/flow两次
自定义流控异常
package com.example.order.controller;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/order")
public class OrderController {
@RequestMapping("/add")
public String add(){
System.out.println("下单成功");
return "Hello World ";
}
@RequestMapping("/flow")
@SentinelResource(value = "flow",blockHandler = "flowBlockHandler")
public String flow(){
return "正常访问";
}
public String flowBlockHandler(){
return "被流控了";
}
}
再次重启访问:再一秒内访问:http://localhost:8088/order/flow两次
发现没有流控,且看sentinel控制台的流控规则,发现之前配置的没有了,为什么呢?
答:一旦服务器重启之后,在sentinel控制台当中的配置的信息都会丢失,因为他是存储在内存当中的。
解决方案:
第一种:重新新增流控规则
第二种:规则持久化
再访问再一秒内访问:http://localhost:8088/order/flow两次