Sentinel 整合学习完成

This commit is contained in:
YoVinchen 2023-08-17 22:29:40 +08:00
parent d50c81ecaa
commit 2ee2961731
3 changed files with 41 additions and 9 deletions

View File

@ -1,7 +1,9 @@
package com.test.controller; package com.test.controller;
import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.test.entity.User;
import com.test.entity.UserBorrowDetail; import com.test.entity.UserBorrowDetail;
import com.test.service.BorrowService; import com.test.service.BorrowService;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@ -10,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.util.Collections;
/** /**
@ -32,8 +34,15 @@ public class BorrowController {
} }
@RequestMapping("/borrow2/{uid}") @RequestMapping("/borrow2/{uid}")
UserBorrowDetail findUserBorrows2(@PathVariable("uid") int uid) { @SentinelResource(value = "findUserBorrows2", blockHandler = "test")
return service.getUserBorrowDetailByUid(uid); UserBorrowDetail findUserBorrows2(@PathVariable("uid") int uid) throws InterruptedException {
throw new RuntimeException();
}
UserBorrowDetail test(int uid, BlockException e) {
// 输出降级异常
System.out.println(e.getClass());
return new UserBorrowDetail(new User(), Collections.emptyList());
} }
@RequestMapping("/blocked") @RequestMapping("/blocked")
@ -45,7 +54,7 @@ public class BorrowController {
return object; return object;
} }
// @RequestMapping("/test") // @RequestMapping("/test")
// @SentinelResource(value = "test", fallback = "except", //fallback指定出现异常时的替代方案 // @SentinelResource(value = "test", fallback = "except", //fallback指定出现异常时的替代方案
// blockHandler = "blocked", // blockHandler = "blocked",
//// 特别注意这种方式会在没有配置blockHandler的情况下将Sentinel机制内也就是限流的异常的异常也一并处理了如果配置了blockHandler那么在出现限流时依然只会执行blockHandler指定的替代方案因为限流是在方法执行之前进行的 //// 特别注意这种方式会在没有配置blockHandler的情况下将Sentinel机制内也就是限流的异常的异常也一并处理了如果配置了blockHandler那么在出现限流时依然只会执行blockHandler指定的替代方案因为限流是在方法执行之前进行的
@ -60,11 +69,10 @@ public class BorrowController {
// return t.getMessage(); // return t.getMessage();
// } // }
@RequestMapping("/test") @RequestMapping("/test")
@SentinelResource("test") //注意这里需要添加@SentinelResource才可以用户资源名称就使用这里定义的资源名称 @SentinelResource("test")
String findUserBorrows2(@RequestParam(value = "a", required = false) String a, //注意这里需要添加@SentinelResource才可以用户资源名称就使用这里定义的资源名称
@RequestParam(value = "b", required = false) String b, String findUserBorrows2(@RequestParam(value = "a", required = false) String a, @RequestParam(value = "b", required = false) String b, @RequestParam(value = "c", required = false) String c) {
@RequestParam(value = "c",required = false) String c) { return "请求成功a = " + a + ", b = " + b + ", c = " + c;
return "请求成功a = "+a+", b = "+b+", c = "+c;
} }
//模拟慢调用 //模拟慢调用

View File

@ -0,0 +1,21 @@
package com.test.service.client;
import com.test.entity.User;
import org.springframework.stereotype.Component;
/**
* ClassName: UserClientImpl
* Package: com.test.service.client
*
* @author yovinchen
* @Create 2023/8/17 22:25
*/
@Component
public class UserClientImpl implements UserClient{
@Override
public User getUserById(int uid) {
User user = new User();
user.setName("我是替代方案");
return user;
}
}

View File

@ -28,3 +28,6 @@ spring:
# 关闭Context收敛这样被监控方法可以进行不同链路的单独控制 # 关闭Context收敛这样被监控方法可以进行不同链路的单独控制
web-context-unify: false web-context-unify: false
block-page: /blocked block-page: /blocked
feign:
circuitbreaker:
enabled: true