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

概述

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

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

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

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

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

1、引入依赖

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-web-servlet</artifactId>
    <version>x.y.z</version>
</dependency>

2、添加过滤器

@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识别成资源所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部