提交 d1e26133 编写于 作者: H haoxr

feat:整合Sentinel降级

上级 8ba53cb6
......@@ -2,11 +2,13 @@ package com.youlai.admin.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.admin.common.enums.PermTypeEnum;
import com.youlai.admin.handler.UserBlockHandler;
import com.youlai.admin.pojo.entity.SysUser;
import com.youlai.admin.pojo.entity.SysUserRole;
import com.youlai.admin.pojo.dto.UserDTO;
......@@ -166,7 +168,9 @@ public class UserController extends BaseController {
}
@ApiOperation(value = "获取当前用户信息")
@ApiOperation(value = "获取当前登陆的用户信息")
@SentinelResource(value = "getCurrentUser",blockHandlerClass = UserBlockHandler.class,blockHandler =
"handleGetCurrentUserBlock")
@GetMapping("/me")
public Result<UserVO> getCurrentUser() {
UserVO userVO = new UserVO();
......
package com.youlai.admin.component;
package com.youlai.admin.handler;
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.youlai.common.result.Result;
......@@ -18,7 +19,7 @@ import javax.servlet.http.HttpServletResponse;
* @createTime 2021/4/12 22:57
*/
@Component
public class CustomBlockExceptionHandler implements BlockExceptionHandler {
public class DefaultBlockExceptionHandler implements BlockExceptionHandler {
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws Exception {
......@@ -31,6 +32,8 @@ public class CustomBlockExceptionHandler implements BlockExceptionHandler {
if(e instanceof FlowException){
// objectMapper.writeValue 用于将java对象转位JSON格式返回调用方
objectMapper.writeValue(response.getWriter(), Result.failed(ResultCode.FLOW_LIMITING));
}else if(e instanceof DegradeException){
objectMapper.writeValue(response.getWriter(),Result.failed(ResultCode.DEGRADATION));
}
}
}
package com.youlai.admin.handler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.youlai.admin.pojo.vo.UserVO;
import com.youlai.common.result.Result;
/**
* @author haoxr
* @description TODO
* @createTime 2021/4/23 23:30
*/
public class UserBlockHandler {
public static Result<UserVO> handleGetCurrentUserBlock(BlockException blockException) {
return Result.success(new UserVO());
}
}
......@@ -26,11 +26,11 @@ spring:
groupId: SENTINEL_GROUP
data-type: json
rule-type: flow
# 限流规则,flow为key,随便定义
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
dataId: ${spring.application.name}-flow-rules
dataId: ${spring.application.name}-degrade-rules
groupId: SENTINEL_GROUP
data-type: json
rule-type: degrade
......@@ -49,7 +49,7 @@ public enum ResultCode implements IResultCode, Serializable {
SYSTEM_DISASTER_RECOVERY_TRIGGER("B0200", "系统容灾功能被出发"),
FLOW_LIMITING("B0210", "系统限流"),
SYSTEM_FUNCTION_DEGRADATION("B0220", "系统功能降级"),
DEGRADATION("B0220", "系统功能降级"),
SYSTEM_RESOURCE_ERROR("B0300", "系统资源异常"),
SYSTEM_RESOURCE_EXHAUSTION("B0310", "系统资源耗尽"),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册