当前位置: 首页 > Web前端 > vue.js

SpringCloud微服务实战——搭建企业级开发框架(十六):集成Sentinel高可用流量管理框架【自定义返回消息】

时间:2023-04-01 01:18:06 vue.js

SpringCloud微服务实战-搭建企业级开发框架(十六):集成Sentinel高可用流量管理框架【自定义返回信息】Sentinel限流后,默认响应信息为BlockedbySentinel(限流),不是系统整体功能提示统一。参考我们前面设置的统一的响应和异常处理方式,以同样的格式返回消息。1、在自定义Sentinel返回消息之前,需要先调整一下代码结构,因为这里我们需要使用统一的异常返回格式。考虑到后期可能出现的使用问题,这里需要将gitegg-platform-b??oot项目中定义的统一响应和异常移至新建的gitegg-platform-b??ase通用定义项目中,并将gitegg-platform-b??ase和gitegg-platform-cloud中引入了spring-boot-starter-weborg.springframework.bootspring-boot-starter-webtruecom.gitegg。platformgitegg-platform-b??ase2.自定义GitEgg-Platform子项目gitegg-platform-cloud中的Sentinel错误处理类GitEggBlockExceptionHandler.java:packagecom.gitegg。platform.cloud.sentinel.handler;导入com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;导入com.alibaba.csp.sentinel.slots.block.BlockException;导入com.fasterxml.jackson.databind.ObjectMapper;导入com.gitegg.platform.base.enums.ResultCodeEnum;导入com.gitegg.platform.base.result.Result;导入lombok.extern.slf4j.Slf4j;importorg.springframework.stereotype.Component;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/***自定义异常处理器*/@Slf4j@ComponentpublicclassGitEggBlockExceptionHandlerimplementsBlockExceptionHandler{@Overradepublicvoid句柄(HttpServletRequest请求,HttpServletResponse响应,BlockExceptione)抛出异常{response.setStatus(429);response.setContentType("application/json;charset=utf-8");结果result=Result.error(ResultEMEnum.SYS,ResultCodeEnum.SYSTEM_BUSY.getMsg());newObjectMapper().writeValue(response.getWriter(),结果);}}3。配置Sentinel控制台,配置容易限流的规则,打开Jmeter进行测试,我们可以看到返回的消息已经是我们自定义的格式了:本文源码在https://gitee.com/wmz1930/GitEgg第16章分支