写点什么

SpringCloud Alibaba 入坑(六),java 开发程序员面试题

用户头像
极客good
关注
发布于: 刚刚

@SentinelResource 的源码


@Target({ElementType.METHOD})


@Retention(RetentionPolicy.RUNTIME)


@Inherited


public @interface SentinelResource {


String value() default "";


EntryType entryType() default EntryType.OUT;


String blockHandler() default "";


Class<?>[] blockHandlerClass() default {};


String fallback() default "";


Class<? extends Throwable>[] exceptionsToTrace() default {Throwable.class};


}


@SentinelResource 的属性


  • value 资源名称

  • entryType entry 类型,有 IN、OUT 两种

  • blockHandler 限流处理方法

  • blockHandlerClass 限流处理类

  • fallback 熔断降级处理方法

  • fallbackClass 熔断降级处理类

  • exceptionsToTrace 异常跟踪列表


限流处理


==================================================================



前面出现限流情况后,都会出现一样的错误信息,那么我们是否能定义一个自己的限流处理方法呢?



@Slf4j


@RestController


@RequestMapping("provider")


public class GoodsController {


@GetMapping("goods")


@SentinelResource(value = "goods",blockHandler = "findGoodsExceptionHandler")


public String findGoods(){


log.info("正常返回商品");


return "正常返回商品";


}


public String findGoodsExceptionHandler(BlockException ex){


log.error("出现限流",ex);


return "出现限流";


}


blockHandler 属性指定限流处理的方法名,默认情况下该方法必须定义在当前类中,而且参数和返回值和原方法一致,可以多定义一个 BlockException 参数代表限流异常。


如果不希望处理方法和原方法耦合在一起,可以单独定义处理类,处理方法必须是静态的。


@Slf4j


public class MyBlockHandler {


public static String findGoodsExceptionHandler(BlockException ex){


log.error("出现限流",ex);


return "出现限流";


}


}


然后 @SentinelResource 加上属性


blockHandlerClass = MyBlockHandler.class


配置限流规则



出现限流后,调用的是自定义方法



处理降级


==================================================================


通过 fallback 属性指定降级方法,降级方法必须在同一个类中,返回值和参数和原方法一致


@Slf4j


@R


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


estController


@RequestMapping("provider")


public class GoodsController {


@GetMapping("goods")


@SentinelResource(value = "goods",fallback = "findGoodsFallback")

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
SpringCloud Alibaba 入坑(六),java开发程序员面试题