Sentinel的底层兜底机制是如何实现的?

2026-05-28 03:591阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计281个文字,预计阅读时间需要2分钟。

Sentinel的底层兜底机制是如何实现的?

方式一:将熔断方法和控制台请求写在一起 + @GetMapping(/fun3) @SentinelResource(value=fun3, blockHandler=fun3Handler) public String fun3() { return fun3; } // 熔断方法 public String fun3Handler(BlockException ex) { // Sentinel提示 /fun3 接口被限流了 return 接口被限流了; }

方式一:将兜底方法和控制器请求写在一起

@GetMapping("/fun3") @SentinelResource(value = "fun3",blockHandler = "fun3Handler") public String fun3() { return "fun3"; } //兜底方法 public String fun3Handler(BlockException ex){ //Sentinel提示信息 String canonicalName = ex.getClass().getCanonicalName(); return "兜底:fun3Handler "+canonicalName+" 服务不可用!"; }

在Sentinel中配置限流规则:

注意:使用资源流限流,不要使用url限流。因为URL限流只会调用默认的方法,只有资源名限流,自定义兜底方法才能起作用。

高频访问fun3结果:

方法二:将兜底方法写到单独的类中

  • 兜底方法
public class MyBlockHandler { public static String handlerException(BlockException ex) { return "自定义全局的:BlockHandler"; } }
  • 控制器请求方法
@GetMapping("/fun4") @SentinelResource(value = "fun4",blockHandlerClass = MyBlockHandler.class,blockHandler = "handlerException") public String fun4() { return "fun4"; }

建议限流无则+测试,同方法一

Sentinel的底层兜底机制是如何实现的?

本文共计281个文字,预计阅读时间需要2分钟。

Sentinel的底层兜底机制是如何实现的?

方式一:将熔断方法和控制台请求写在一起 + @GetMapping(/fun3) @SentinelResource(value=fun3, blockHandler=fun3Handler) public String fun3() { return fun3; } // 熔断方法 public String fun3Handler(BlockException ex) { // Sentinel提示 /fun3 接口被限流了 return 接口被限流了; }

方式一:将兜底方法和控制器请求写在一起

@GetMapping("/fun3") @SentinelResource(value = "fun3",blockHandler = "fun3Handler") public String fun3() { return "fun3"; } //兜底方法 public String fun3Handler(BlockException ex){ //Sentinel提示信息 String canonicalName = ex.getClass().getCanonicalName(); return "兜底:fun3Handler "+canonicalName+" 服务不可用!"; }

在Sentinel中配置限流规则:

注意:使用资源流限流,不要使用url限流。因为URL限流只会调用默认的方法,只有资源名限流,自定义兜底方法才能起作用。

高频访问fun3结果:

方法二:将兜底方法写到单独的类中

  • 兜底方法
public class MyBlockHandler { public static String handlerException(BlockException ex) { return "自定义全局的:BlockHandler"; } }
  • 控制器请求方法
@GetMapping("/fun4") @SentinelResource(value = "fun4",blockHandlerClass = MyBlockHandler.class,blockHandler = "handlerException") public String fun4() { return "fun4"; }

建议限流无则+测试,同方法一

Sentinel的底层兜底机制是如何实现的?