我想使用 Bucket4j 应用多个速率限制。因此,一个基于 accountNumber 的速率限制(特定 accountNumber 每秒 10 个请求)和另一个总体应用速率限制(所有帐户每秒 100 个请求)
我看到以下示例:
Bucket bucket = Bucket4j.builder()
// allows 1000 tokens per 1 minute
.addLimit(Bandwidth.simple(1000, Duration.ofMinutes(1)))
// but not often then 50 tokens per 1 second
.addLimit(Bandwidth.simple(50, Duration.ofSeconds(1)))
.build();
然而,这更多地限制了同一桶上跨时间段的突发率。
我想,我会有所有帐户的存储桶和一个应用程序存储桶,并且需要检查适当的帐户存储桶和整个存储桶?
if (accountBucket.tryConsume(1) && applicationBucket.tryConsume(1)) {
... make request
}