我是靠谱客的博主 大意皮皮虾,这篇文章主要介绍Controller接口无法自动被Sentinel识别成资源,现在分享给大家,希望可以做个参考。

在研究sentinel的时候遇到一个问题:

本地服务注册到sentinel控制台后,相关的controller接口并不会被识别成资源,只有显式的在接口上添加 @SentinelResource 注解,才能被识别成资源。

这样当然是不行的,对于一些已经存在了的项目,代码是有较大入侵的,得在每一个controller上加上 @SentinelResource,还得给每个接口指定资源名称,这要是有几百个接口,工作量太大了。为此查了不少资料,可能是搜索描述不够准确,找了很久,最后在官方文档上找到了解决方法。

官网链接如下:Sentinel 提供针对 Servlet 的原生整合

其实比较简单,只需要两步:

1、引入依赖

复制代码
1
2
3
4
5
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-web-servlet</artifactId> <version>x.y.z</version> </dependency>

2、添加过滤器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean sentinelFilterRegistration() { FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>(); registration.setFilter(new CommonFilter()); registration.addUrlPatterns("/*"); registration.setName("sentinelFilter"); registration.setOrder(1); return registration; } }

接入 filter 之后,所有访问的 Web URL 就会被自动统计为 Sentinel 的资源,可以针对单个 URL 维度进行流控。
 

最后

以上就是大意皮皮虾最近收集整理的关于Controller接口无法自动被Sentinel识别成资源的全部内容,更多相关Controller接口无法自动被Sentinel识别成资源内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部