范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Sentionel统一异常处理

  五.统一异常处理—BlockException
  在上述规则测试中,当违反规则时,出来的异常信息页面不够友好和统一,我们可以通过设置统一的异常处理类,针对不同规则显示不同异常信息。
  创建一个配置类,实现BlockExceptionHandler接口  @Component public class MyBlockExceptionHandler implements BlockExceptionHandler {      @Override     public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws Exception {          ResponseResult rs=null;          if(e instanceof FlowException)             rs= Response.createFailResp(-1,"接口限流了");         else if(e instanceof DegradeException)             rs=Response.createFailResp(-2,"服务降级了");         else if(e instanceof ParamFlowException)             rs=Response.createFailResp(-3,"参数限流了");         else if(e instanceof AuthorityException)             rs=Response.createFailResp(-4,"权限规则不通过");         else if(e instanceof SystemBlockException)             rs=Response.createFailResp(-5,"系统保护");          httpServletResponse.setContentType("application/json;charset=utf-8");         httpServletResponse.getWriter().write(JSON.toJSONString(rs));      } }
  添加规则测试:
  六 @SentinelResource注解详解
  通过前面的学习,我们了解到通过Sentinel除了可以控制对Spring Mvc接口层级的控制,也可以对service层的某个方法控制,也就是说在我们实际项目开发时不仅仅限于接口,可能对于某个方法的调用限流,对于某个外部资源的调用限流等都希望做到控制。
  那么如何使用@SentinelResource注解灵活的定义控制资源以及如何配置控制策略。我们来系统学习一下。 1.自定义资源点
  我们可以对这个资源点做限流处理 2 实现异常处理
  默认情况下,Sentinel对控制资源的限流处理是直接抛出异常。设置了统一异常处理BlockExceptionHandler也会发现对非控制层的资源没有用,这样对用户交流不友好,我们需要处理一下@SentinelResource资源的异常信息。
  @SentinelResource资源的异常处理有两种方式:
  blockHandler:sentinel定义的失败调用或限制调用,若本次访问被限流或服务降级,则调用blockHandler指定的接口
  fallback:失败调用,若本接口出现未知异常,则调用fallback指定的接口。
  当两个都配置时,也就是当出现sentinel定义的异常时,调用blockHandler,出现其它异常时,调用fallback。 2.1 blockhandler 的使用
  blockhandler 定义当资源内部发生了BlockException(也就是sentinel定义的失败异常或限制异常),应该走的处理逻辑。
  要求:
  1.当前方法的返回值和参数要和原方法一致
  2.允许在参数列表的最后加入一个参数BlockException,用来接收原方法中发生的异常。
  2.2 fallback的使用
  要求:
  1.当前方法的返回值和参数要和原方法一致
  2.允许在参数列表的最后加入一个参数Throwable,用来接收原方法中发生的异常。
  2.3 测试
  3.怎么将异常处理放在资源类的外面
  如果将所有的异常处理都放在资源类里面,会导致类很臃肿,不利于维护,外面可以将异常处理放在类外面
  4.@SentinelResource的其它属性
  value: Sentinel资源的名称,我们不仅可以通过url进行限流,也可以把此值作为资源名配置,一样可以限流。
  entryType: 条目类型(入站或出站),默认为出站(EntryType.OUT)
  resourceType: 资源的分类(类型)
  blockHandler: 块异常函数的名称,默认为空
  blockHandlerClass: 指定块处理方法所在的类
  默认情况下, blockHandler与原始方法位于同一类中。 但是,如果某些方法共享相同的签名并打算设置相同的块处理程序,则用户可以设置存在块处理程序的类。 请注意,块处理程序方法必须是静态的。
  fallback: 后备函数的名称,默认为空
  defaultFallback: 默认后备方法的名称,默认为空
  defaultFallback用作默认的通用后备方法。 它不应接受任何参数,并且返回类型应与原始方法兼容
  fallbackClass: fallback方法所在的类(仅单个类)
  默认情况下, fallback与原始方法位于同一类中。 但是,如果某些方法共享相同的签名并打算设置相同的后备,则用户可以设置存在后备功能的类。 请注意,共享的后备方法必须是静态的。
  exceptionsToTrace: 异常类的列表追查,默认 Throwable
  exceptionsToIgnore: 要忽略的异常类列表,默认情况下为空。 七 Sentinel整合OpenFeign实现服务降级(服务容错)
  如果一个服务(服务消费者)调用了另一个服务(服务生产者),服务生产者有异常,会导致服务消费者出错,我们希望不仅仅只是显示错误,而是能启动熔断器,对服务消费者做降级(容错)处理。
  那么应该怎么实现呢?
  1.添加jar包
  我们当前项目里已添加       org.springframework.cloud     spring-cloud-starter-openfeign 
  2.添加配置信息
  在服务消费者的配置文件中添加
  3.添加降级处理类
  4.在feign客户端关联对应的降级处理类
  5.在服务提供者中模拟一个异常
  比如 int i=1/0;
  6.测试
  八 Sentinel 规则持久化
  Sentinel Dashboard中添加的规则是存储在内存中的,只要项目一重启规则就丢失了
  我们可以将规则持久化到nacos中,在nacos中添加规则,然后同步到dashboard中.
  方法如下:
  1.添加jar包       com.alibaba.csp     sentinel-datasource-nacos 
  2.在nacos配置中心添加配置文件
  [   {     "resource":"/goods",        "limitApp":"default",     "grade":1,     "count":2,     "strategy":0,     "controlBehavior":0,     "clusterMode":false   }  ]
  注意:
  配置格式:选择 json 选项
  配置内容:
  resource: 资源名称
  limitApp: 来源应用
  grade: 阈值类型,0表示线程,1表示QPS
  count: 单机阈值
  strategy: 流控模式,0表示直接,1表示关联,2表示链路
  controlBehavior: 流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
  clusterMode: 是否集群
  3.修改微服务配置信息,添加sentinel规则配置信息到微服务的配置文件中
  4.重启服务

麻阳年产100万套服饰项目投产我们公司分两班生产,一天生产200多套校服,一个星期能生产1000多套漂亮产品。湖南恒达新材料科技有限公司生产厂长陈嘉祥手拿校服笑呵呵地说道。3月21日,湖南恒达新材料科技有限公司八测已经把配置玩明白了华硕PRIMEB760MAYWWIFID4评测首先,AYW这个名字我是绷不住的。我都怀疑华硕是不是有小黑子进去就职了。不过有一说一,在当今主板越来越贵的时代里,华硕搞得这个AYW是真的说不了坏。我的建议是华擎,微星还有爱国嘉别2023年了iPhone15还是60Hz,你怎么看?首先没几个人知道什么叫刷新率,什么叫hz,更没几个人对比过不同手机之间的区别。一个随便的小习俗都可以延续千年,一个买手机的习惯延续个十来年也不足为怪。所以一个市场的先发优势才那么重百年灵发布全新TopTime复古车系列和Premier璞雅系列2023年3月21日,百年灵全新发布TopTime复古车系列和Premier璞雅系列腕表,均搭载自动上弦的百年灵自制01机芯,生动诠释速度与风格。福特雷鸟加入TopTime复古车系14组oversized西装穿搭示范简约又高级oversized西装自带时髦感,可以和短裙,短裤,legging,西裤等做搭配,不仅百搭还非常的吸睛,当然,选择款式时,最好是那种版型简约有型,面料考究的,这样,整体上看起来更加越精明,越吃亏吃亏,虽然意味着舍弃,但却不失为一种风度一种胸襟。贪心的人,总是费尽心力地去算计,在其仗义热情的伪装背后更多的是对别人肆无忌惮的伤害和掠夺。所以,只有肯于吃亏不争名利的人才算得上是破防了,妈妈去世了,最后遗言给我留了两首儿歌陪伴才是最长情的告白,面对亲人的去世,我们都会不知所措,内心中充满着不舍和悲伤。很多时候亲人的去世,都是很突然的,一时间都难以面对这样的消息。今天讲述的是一篇帖子名为妈妈去世了,遗我在看守所的日子(十一)我不是一个迷信的人,却是一个具有浓厚传统观念的人。很清楚地记得以前一个算命先生说过我,人生虽变数万千,但打呱呱落地的那一刻,便已注定了你今生的得失,无论悲喜,命里终究难逃刑狱之劫。失败不是一种耻辱,而是一种成长的机会文梅语寒主播梅语寒我们都曾经或多或少地经历过失败,或许是考试不及格,或许是工作失意,或许是爱情破碎。我们都曾经为自己的失败感到羞愧沮丧绝望。我们都曾经想过放弃逃避自暴自弃。但是,请reamleGTNeo5SE手机官方预热将带来大容量闪存IT之家3月22日消息,realme真我手机官方今天预热,真我GTNeo5支持1TB满级内存。作为同系列新玩家真我GTNeo5SE,继续将内存自由进行到底,敬请期待!(IT之家这里红肉是完美的蛋白质来源,了解它的优点红肉是一种优质的蛋白质来源,它含有丰富的氨基酸和必需脂肪酸,这些成分对我们的身体来说非常重要。虽然过度食用红肉可能会导致健康问题,但适量的摄入却有益于我们的身体。以下是红肉作为蛋白
热闹是他们的而我什么都没有孤独的西班牙守门员今日凌晨,西班牙在世界杯小组赛中70大胜哥斯达黎加。作为这片绿茵上最孤独的选手西班牙门将表示队友们不厚道,好歹放一下水给我扑一下球啊,这场过后我身价要暴跌了。守门员表示想看对面的情一天4个瓜,顶流判刑,爆婚内出轨,戏骨遗憾去世,个个是大事件或许是觉得世界杯不够热闹,内娱也来添把火。迟迟没有宣判的吴亦凡,一审被判13年,并在服完刑后被驱逐出境。前几天,汪小菲酒后开撕大S后,本以为酒醒后他真的选择停火,没想到又开启新一轮青岛企业上榜52家,再夺鲁企300强榜首!二三名是济南和烟台山东商报速豹新闻网记者吴绍博丁一凡从地域分布来看,2022鲁企300强中,山东16城市均有企业上榜,其中青岛上榜企业数量最多,为52家,再夺榜首。济南烟台分列二三位,数量分别为48月销1的衣服运费999块钱10月29号,张女士在网上买了件衣服,收到后因为尺寸不对,向店铺申请退款。这时她才注意到,运费是一个巨大而又特殊的金额。西服运费999元,自己竟是月销1张女士我只能退508元,我退央视主持人杨帆娶普通妻子李飒,婚后生两女,日子过得有滋有味2007年,杨帆告诉女友我要去北京打拼了,你愿意跟我一起吗?此时的杨帆和李飒已经认识十年,恋爱多年准备结婚。你去哪里,哪里就是家。女友的一番话,让杨帆泪目了。双方家人知道杨帆要放弃72岁大妈自述每月花7000块钱请个男保姆,他待我像亲生母亲一样导语在以前的时候,很多老人在晚年,就只能去雇请女保姆来照顾自己今后的晚年生活。虽然说女性保姆有自己独特的优势在里面,但是与此相当于的是,女性保姆也有自己的劣势在里面,比如说女性保姆五块钱的幸福春天和老公在花市以每盆5块钱的价格淘来几盆半死不活的绣球花。从春到夏,由夏到秋,秋去冬来。颓败的绣球花越来越精神。每一天,它们都生活在我们的眼睛里,也生活在我们的关爱里干涸了,浇水堪比十年前的小米1?这三款三四千块钱的机器,放心入不踩坑之前小米1发布的时候,只要1999元就可以拿下,你看现在的旗舰机,价格都涨成什么样了,小米12SU,没有五六千块,是拿不下的,以至于有人在问,现在三四千块钱,真的还能买到真正好用的每天通勤只花1块钱?电动小车有多省消费者平时用车做什么?根据统计私家车80以上的时间用来每日代步上下班,或者接娃买菜,出行散心等,车内载12人。对于多数普通的家庭用户来说,抛开面子空间等因素,只针对日常用车需求,其猪身上最好吃的肉排行,五花肉倒数第一,里脊肉排第2,建议了解猪身上最好吃的肉排行,五花肉倒数第一,里脊肉排第2,建议了解猪肉性平味甘咸,有补充营养滋阴润燥提高免疫力的作用。一头猪全身都是宝,每个部位有不同的口感,作用和做法也不同。买猪肉时,在外旅游,为何民宿变得越来越鸡肋,游客吐槽住一次就懂了近年来,民宿作为一种新兴的旅游住所走入人们的视野,要知道以往人们出门旅游,要么寻找酒店和招待所度过夜晚,要么居住在旅游地的亲戚家里,而现在许多家里房间或房屋空闲的房东选择把自己的屋