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

Quarkus Rest客户端限制/速率限制

澹台啸
2023-03-14

我正在使用quarkus.rest客户端调用外部API,并希望将这些调用的频率限制在每秒50次,这样我就不会淹没外部服务。在没有侧车方法的情况下(通过代码),推荐的实现方法是什么?

共有1个答案

公孙涵育
2023-03-14

您可以使用< code > @ Bulkhead micro profile注释,并为方法的执行设置最大并发线程限制。但是,这只适用于应用程序的一个实例。

日食微配置文件文档

从上面的留档复制的示例:

@Bulkhead(5) // maximum 5 concurrent requests allowed
public Connection serviceA() {
   Connection conn = null;
   counterForInvokingServiceA++;
   conn = connectionService();
   return conn;
}
// maximum 5 concurrent requests allowed, maximum 8 requests allowed in the waiting queue
@Asynchronous
@Bulkhead(value = 5, waitingTaskQueue = 8)
public Future<Connection> serviceA() {
   Connection conn = null;
   counterForInvokingServiceA++;
   conn = connectionService();
   return CompletableFuture.completedFuture(conn);
}

您甚至可以在部署中设置,这样就可以在不进行新构建的情况下更改此参数。

要使用@Bulkhead,必须将容错添加到项目中

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-fault-tolerance</artifactId>
</dependency>
 类似资料:
  • 我正在使用SpringWebFlux和netty构建一个微服务。在内部,我使用web客户端进行RESTAPI调用。如何控制通过webclient调用RESTAPI的速率?我猜backnpressure只适用于单个请求/回复,不适用于对我的微服务的多个请求。Amy pointers将不胜感激。谢谢

  • 据我所知,Facebook API的速率限制是每个令牌每600秒大约600次调用。 因此,当用户登录时,超过速率限制应该不会有问题,因为每个用户都有不同的用户令牌,因此每个用户每600秒将有600个呼叫的速率限制。但我担心的是,当用户浏览公共夜总会页面和活动时,当他们没有登录时,我的应用会超过速率限制,因为多个用户只能使用1个应用令牌和1个IP地址(我的服务器)。如果有多个用户同时浏览公共夜总会页

  • 速率限制配置参考 filter.http.RateLimit filter.http.RateLimit proto { "domain": "...", "stage": "...", "request_type": "...", "timeout": "{...}" } domain (string, REQUIRED) 需要调用速率限制服务时的域。 stage (uint3

  • 速率限制配置参考。 filter.network.RateLimit filter.network.RateLimit proto { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout": "{...}" } stat_prefix (string, REQUIRED) 发布统计信息时使用的前缀。

  • 速率限制配置概述。 { "name": "rate_limit", "config": { "domain": "...", "stage": "...", "request_type": "...", "timeout_ms": "..." } } domain (required, string) 调用速率限制服务时使用的域。 stage (opt

  • 速率限制配置参考。 { "name": "ratelimit", "config": { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout_ms": "..." } } stat_prefix (required, string) 发布统计信息时使用的前缀。 domai