jai*_*lis 3 resteasy quarkus quarkus-rest-client
我正在使用 quarkus.rest-client 调用外部 API,并希望将这些调用的频率限制为每秒 50 次,这样我就不会淹没外部服务。在没有 side-car 方法(通过代码)的情况下实现这一目标的推荐方法是什么?
您可以使用@BulkheadMicroprofile 注释并设置方法执行的最大并发线程限制。但是,这仅适用于您的应用程序的一个实例。
从上述文档复制的示例:
@Bulkhead(5) // maximum 5 concurrent requests allowed
public Connection serviceA() {
Connection conn = null;
counterForInvokingServiceA++;
conn = connectionService();
return conn;
}
Run Code Online (Sandbox Code Playgroud)
// 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);
}
Run Code Online (Sandbox Code Playgroud)
value您甚至可以在部署时设置,因此无需重新构建即可更改此参数。
要使用@Bulkhead,您必须将容错添加到您的项目中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-fault-tolerance</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2116 次 |
| 最近记录: |