当前位置: 首页 > news >正文

某某公司电子商务网站建设与维护长沙销售公司 网站

某某公司电子商务网站建设与维护,长沙销售公司 网站,wordpress 磁贴主题,娃哈哈软文推广最近项目需要sentinel熔断时记录熔断的次数#xff0c;在经过一阵搜索后决定利用断路器的状态变化来实现此功能 然而#xff0c;遇到了这样的一个情况#xff0c;断路器的状态在第一次熔断时正常从close–open#xff0c;但在后续#xff08;熔断时间内blocked或者熔断…最近项目需要sentinel熔断时记录熔断的次数在经过一阵搜索后决定利用断路器的状态变化来实现此功能 然而遇到了这样的一个情况断路器的状态在第一次熔断时正常从close–open但在后续熔断时间内blocked或者熔断结束后重新开启断路器断路器的状态变化均为half open–open,导致无法区分究竟是熔断时间内还是再次被熔断了因此使用了一个flag来做标记实现了功能。 本方法利用了断路器的状态统计熔断次数代码修改自chatgpt 代码如下 /*** ClassName: SentinelBlockHandler* Description: sentinel统一异常处理* author: liuzijian haiyisoft* Date: 2023/11/7 11:54* version: 1.0**/ Component Slf4j public class SentinelBlockHandler implements BlockExceptionHandler {private boolean flag false;Resourceprivate ServerDegradeLogsRepository serverDegradeLogsRepository;Value(${server.port})private Integer serverPort;private SentinelBlockHandler() {// 私有构造方法防止外部实例化}public static SentinelBlockHandler getInstance() {return SingletonHolder.INSTANCE;}private static class SingletonHolder {private static final SentinelBlockHandler INSTANCE new SentinelBlockHandler();}static {registerStateChangeObserver();}private static void registerStateChangeObserver() {EventObserverRegistry.getInstance().addStateChangeObserver(logging,(prevState, newState, rule, snapshotValue) - {ListCircuitBreakerStateChangeObserver observers EventObserverRegistry.getInstance().getStateChangeObservers();if (newState CircuitBreaker.State.OPEN) {getInstance().flag true;System.err.println(String.format( resource: %s, %s - OPEN at %d, snapshotValue%.2f,rule.getResource(), prevState.name(), TimeUtil.currentTimeMillis(), snapshotValue));} else {System.err.println(String.format( resource: %s, %s - %s at %d,rule.getResource(), prevState.name(), newState.name(), TimeUtil.currentTimeMillis()));}});}Overridepublic void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws Exception {/*** 请求被限流了*/if (e instanceof FlowException){httpServletResponse.setStatus(429);ResponseService.httpResponse(httpServletResponse, ResponseStatus.SENTINEL_FLOW_ERROR);log.error(请求被限流了:{},e.getMessage());}/*** 请求被熔断降级了*/else if (e instanceof DegradeException) {System.out.println(进入熔断异常);if (getInstance().flag){InetAddress addr InetAddress.getLocalHost();String degradeText 请求被熔断降级了:{ e.getMessage() };ServerDegradeLogs serverDegradeLogs new ServerDegradeLogs(addr.getHostAddress(), this.serverPort, degradeText);serverDegradeLogsRepository.save(serverDegradeLogs);getInstance().flag false;}httpServletResponse.setStatus(429);ResponseService.httpResponse(httpServletResponse, ResponseStatus.SENTINEL_DEGRADE_ERROR);log.error(请求被熔断降级了:{},e.getMessage());}/*** 热点被限流了*/else if (e instanceof ParamFlowException) {httpServletResponse.setStatus(429);ResponseService.httpResponse(httpServletResponse, ResponseStatus.SENTINEL_PARAM_FLOW_ERROR);log.error(热点被限流了:{},e.getMessage());}/*** 请求没有权限*/else if (e instanceof AuthorityException) {httpServletResponse.setStatus(401);ResponseService.httpResponse(httpServletResponse, ResponseStatus.UNAUTHORIZED);log.error(请求没有权限:{},e.getMessage());}} }参考链接 断路器的使用https://github.com/alibaba/Sentinel/issues/1939
http://www.pierceye.com/news/653977/

相关文章:

  • 设计师个人作品集网站阳泉市住房保障和城乡建设管理局网站
  • 国外的网站模板类网站网络营销应该这样做
  • 文登市住房和城乡建设局网站山东定制网页建站
  • 北京优化词网站晋城企业网站建设
  • 商城网站 个人备案建设工程质量监理协会网站
  • 易企cms网站模板广告设计与制作好找工作吗
  • wordpress建站容易吗食品饮料网站源码
  • 做网站还有市场吗建一个网站花费
  • 惠州网站建设哪里有wap网站生成
  • 长沙网站外包公司吗搭建wordpress博客系统
  • 通州企业网站建设做网站合成APP
  • 深圳观澜网站建设室内设计软件手机版
  • 苏州建设网站服务国外做家装的网站有哪些
  • 做导航网站赚钱吗大兴区营销网络推广行业
  • 红衫中国网站建设福建手机版建站系统开发
  • 做平面的网站wordpress授权主题
  • 如何做织梦论坛类的网站官网建设目的
  • 安徽网新科技有限公司 网站开发静态网页报告
  • 营销做网站公司怎么做国际货运代理外贸网站
  • 网站建设部署与发布有效期宝石网站建设
  • 网站建设有什么需求分析现在网站都是拿什么软件做的
  • 网站建设需求分析报告撰写阿里云建设网站流程
  • 网站导航栏设计要求seo搜索引擎的优化
  • 杭州做商务网站全屋定制自己设计
  • 汉中定制网站建设公司南昌公司注册
  • 商务网站建设流程步骤小型公司注册资金写多少合适
  • 台州公司网站外包自己做网站运营
  • 聚名网站专业团队p图
  • 网站推广排名收费徐家汇网站建设
  • 做app软件大概多少钱宁波seo优化项目