一、配置文件要增加
spring.cloud.sentinel.webContextUnify: false
二、在要限流的业务方法上使用@SentinelResource注解
package cn.edu.tju.service;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.stereotype.Service;@Service
public class UserService {@SentinelResource(value = "getUser", blockHandler = "myBlockingHandler")public String getUser(){return " a user...";}public String myBlockingHandler(BlockException ex){System.out.println("链路限流");return "链路限流啦";}
}
三、定义接口调用业务方法
package cn.edu.tju.controller;import cn.edu.tju.service.UserService;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/getUser1")public String getUser1(){return userService.getUser();}@RequestMapping("/getUser2")public String getUser2(){return userService.getUser();}
}
四、在sentinel控制台设置链路限流规则:
五、启动应用,快速刷新接口/getUser1