当前位置: 首页 > 知识库问答 >
问题:

如何在Spring云网关中实现Redis速率限制?

端木皓君
2023-03-14

我试图在Spring云网关中设置速率限制。

我试图在应用程序中配置过滤器。yaml如下所示

filters:
    - name: RequestRateLimiter
      args:
         redis-rate-limiter.replenishRate: 1
         redis-rate-limiter.burstCapacity: 5

我得到下面的错误

java.lang.IllegalArgumentException: Unable to find GatewayFilterFactory with name RequestRateLimiter

如何在spring云网关中实现速率限制?

共有1个答案

甘兴学
2023-03-14

其中一种可能性是不包括以下依赖项(我第一次犯的错误)

org.springframework.boot:spring-boot-starter-data-redis-reactive

由于args包含redis-rate-限制器,因此必须具有此依赖关系。

下面是IDE的屏幕截图,显示了在包含上述依赖项时添加的RequestRateLimiterGatewayFilterFactory

 类似资料:
  • 我不能玩春云之门的限速器。我在这里配置网关: 我使用JMeter调用API循环1000次,但网关没有响应429响应中的请求太多。我哪里错了?

  • 我使用和来实施速率限制,例如每分钟5个请求: 然而,可以在最后一分钟发送5个请求,在第二分钟的第一秒发送5个请求,即在两秒钟内发送10个请求。 如何避免这个问题? 更新:我提出了这个清单。这是一个好方法吗?

  • 假设我的用户订阅了一个计划。那么,是否可以使用SpringCloudGateway根据订阅计划对用户请求进行分级限制?考虑到白银和黄金的计划,它是否会让白银订阅的充值率/容量为5/10,黄金订阅的充值率/容量为50/100? 我天真地想到传递RedisRateLimiter的新实例(见下文,我用5/10设置构建了一个新实例)到过滤器,但我需要从请求中以某种方式获取用户的信息,以便能够找出它是否是白

  • 问题内容: 我将作为个人练习用Java实现一个(简单的)下载器应用程序。它将在不同的线程中运行多个作业,以这种方式,我将在执行期间始终同时下载几个文件。 我希望能够定义在所有下载作业之间共享的下载速率限制,但是我不知道如何执行单个下载任务。我应该怎么做呢?我应该尝试实施哪些解决方案? 谢谢。 问题答案: 我将从管理所有下载的DownloadManager开始。 希望参与托管带宽的所有代码都将在开始

  • 我一直在读关于spring cloud gateway在我的微服务架构中实现API网关的文章。我需要阻止某些URL我一直在使用一些内部操作。但是,我已经像在Zuul中一样在gateway中使用了IgnoredServices和IgnoredPatterns,但是在Spring cloud gateway链接中没有这样的东西。我的内部API以/internal/{something}开头。 同样,我

  • 我需要限制每分钟的请求数。我还没有找到任何方法来使用Spring云网关redis。下面是当前的实现:图像实现 customRouter.getBurstCapacitycustomRouter.getReplenishRate 两者都仅在几秒钟内运行。示例:20 个请求在同一秒内与。 我在1分钟内需要20个请求。