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

免网站域名注册金乡县住房与城乡建设局网站

免网站域名注册,金乡县住房与城乡建设局网站,wordpress 图片模板,国内一线网站设计公司1. SentinelRecourse配置回顾 通过之前的学习,我们知道SentinelRecourse配置的资源定位可以通过两种方式实现:一种是URL,另一种是资源名称。这两种限流方式都要求资源ID唯一 RestController public class RateLimitController {GetMapping(…

1. SentinelRecourse配置回顾

通过之前的学习,我们知道SentinelRecourse配置的资源定位可以通过两种方式实现:一种是URL,另一种是资源名称。这两种限流方式都要求资源ID唯一

@RestController
public class RateLimitController {@GetMapping("/byResource")@SentinelResource(value = "byResource",blockHandler = "handleException")public CommonResult byResource() {return new CommonResult(200,"按资源名称限流测试OK",new Payment(2020L,"serial001"));}public CommonResult handleException(BlockException exception) {return new CommonResult(444,exception.getClass().getCanonicalName()+"\t 服务不可用");}
}

2. 自定义降级处理方法

通过查看上面的代码,我们不难发现现有的兜底方案面临的问题:

  1. 系统默认的,没有体现我们自己的业务要求。
  2. 依照现有条件,我们自定义的处理方法又和业务代码耦合在一块,不直观。
  3. 每个业务方法都添加—个兜底的,那代码膨胀加剧。
  4. 全局统—的处理方法没有体现。

这时我们就需要定义自己的降级处理类,将我们自定义的降级处理方法放在一个统一的类中进行管理,从而将降级方法抽象出来,以便之后的方法复用,并且实现降级处理方法和现有业务逻辑代码的解耦

1. 创建自定义限流方法处理类:CustomerBlockHandler

package com.atguigu.alibaba.sentinel.myhandler;import com.atguigu.springcloud.entities.CommonResult;/*** @author 强浩* @className* @date 2022年09月06日*/
public class CustomerBlockHandler {public static CommonResult handlerException(BlockException exception){return new CommonResult(4444,"按客户自定义,global CustomerBlockHandler ---- handlerException");}public static CommonResult handlerException2(BlockException exception){return new CommonResult(5555,"按客户自定义,global CustomerBlockHandler ---- handlerException2");}
}

2. 在需要进行限流的业务处理类中,指定创建好的业务降级兜底处理类和处理方法

package com.atguigu.alibaba.sentinel.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.atguigu.alibaba.sentinel.myhandler.CustomerBlockHandler;
import com.atguigu.springcloud.entities.CommonResult;
import com.atguigu.springcloud.entities.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author 强浩* @className* @date 2022年09月06日*/
@RestController
@Slf4j
public class RateLimitController {@RequestMapping("/rateLimit/customerBlockHandler")@SentinelResource(value = "customerBlockHandler",blockHandlerClass = CustomerBlockHandler.class,//<-------- 自定义限流处理类blockHandler = "handlerException")//<-----------指定限流降级处理方法public CommonResult customerBlockHandler(){return new CommonResult(200,"按用户自定义", new Payment(2022L,"serial001" ));}
}

3. Sentinel控制台配置:将customerBlockHandler加入到sentinel的限流控制中
在这里插入图片描述

启动微服务后先调用一次 - http://localhost:8401/rateLimit/customerBlockHandler。然后,多次快速刷新http://localhost:8401/rateLimit/customerBlockHandler。刷新后,我们自定义兜底方法的字符串信息就返回到前端。

3. @SentinelRecourse注解详解

注意:注解方式埋点不支持 private 方法。
@SentinelResource 用于定义资源,并提供可选的异常处理和 fallback 配置项。 @SentinelResource 注解包含以下属性:

  • value:资源名称,必需项(不能为空)

  • entryType:entry 类型,可选项(默认为 EntryType.OUT)

  • blockHandler / blockHandlerClass: blockHandler 对应处理 BlockException 的函数名称,可选项。blockHandler 函数访问范围需要是 public,返回类型需要与原方法相匹配,参数类型需要和原方法相匹配并且最后加一个额外的参数,类型为 BlockException。blockHandler 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 blockHandlerClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。

  • fallback /fallbackClass:fallback 函数名称,可选项,用于在抛出异常的时候提供 fallback 处理逻辑。fallback 函数可以针对所有类型的异常(除了exceptionsToIgnore里面排除掉的异常类型)进行处理。fallback 函数签名和位置要求:

    • 返回值类型必须与原函数返回值类型一致;
    • 方法参数列表需要和原函数一致,或者可以额外多一个 Throwable 类型的参数用于接收对应的异常。
    • fallback 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 fallbackClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
  • defaultFallback(since 1.6.0):默认的 fallback 函数名称,可选项,通常用于通用的 fallback 逻辑(即可以用于很多服务或方法)。默认 fallback 函数可以针对所有类型的异常(除了exceptionsToIgnore里面排除掉的异常类型)进行处理。若同时配置了 fallback 和 defaultFallback,则只有 fallback 会生效。defaultFallback 函数签名要求:

    • 返回值类型必须与原函数返回值类型一致;
    • 方法参数列表需要为空,或者可以额外多一个 Throwable 类型的参数用于接收对应的异常。
    • defaultFallback 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 fallbackClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
  • exceptionsToIgnore(since 1.6.0):用于指定哪些异常被排除掉,不会计入异常统计中,也不会进入 fallback 逻辑中,而是会原样抛出。

Sentinel主要有三个核心Api:

  1. SphU定义资源
  2. Tracer定义统计
  3. ContextUtil定义了上下文
http://www.yayakq.cn/news/770826/

相关文章:

  • 网站建设推荐信息佛山市住房和城乡建设部网站
  • 装修平台网站排名前十名有哪些厦门网站推广优化哪家好
  • 南京网站设计制作公司排名榜微信怎么申请小程序
  • 七个php源码下载的网站免费多用户商城系统源码
  • 波哥昆明网站建设昆明房地产网站建设
  • 网站建设职责建设企业网站的意义
  • 网站架构图图郑州同济医院
  • 海尔建设网站的内容emlog转移到wordpress
  • 中国效能建设网站做网站挣钱不
  • 宝安网站设计服务衡水做网站技术
  • 巴彦淖尔专业做网站的国家住房和城乡建设厅网站首页
  • 做网站宣传有用吗做公司网站都需要什么资料
  • 网站建设需要多少时间网站设计培训哪里好
  • 网站服务建设公司免费智能seo收录工具
  • 网站备案个人和企业的区别制作图片的ai
  • 湖北建设厅行政服务中心网站pc端软件下载
  • 外贸发货做网站怎么写亚马逊seo什么意思
  • seo网站关键字优化网站没有内容 备案能成功吗
  • 网站建设从入门到精通 网盘网站备案购买
  • 郴州网站维护什么类型的网站流量高
  • 昌江网站建设品牌设计公司成都
  • 怎么编辑wordpress主题代码洛阳seo网站
  • 查询注册过哪些网站网站制作费用多少钱
  • 建设自己公司的网站首页江苏省建设工程网站系统
  • 网站 工作室 建设 方案温州手机网站制作推荐
  • 怎么样在公司配置服务器做网站五个网站页面
  • 自己怎么制作网站建筑招工网站
  • 网站开发与设计岗位职责平台设计与开发
  • 潍坊做网站的wordpress 添加logo
  • 兰州网站建设程序logo生成器免费下载