我正在使用 Bucket4j,我想处理每个令牌的总请求并发
我试过这个,但它并不完全符合我的预期。
public class PricingPlanService {
private final Map<String, Bucket> cache = new ConcurrentHashMap<>();
public Bucket resolveBucket(String token) {
return cache.computeIfAbsent(apiKey, this::newBucket);
}
private Bucket newBucket(String token) {
Bandwidth bandwidth = resolvePlanFromApiKey(token);
return Bucket4j.builder()
.addLimit(pricingPlan)
.build();
}
public Bandwidth resolvePlanFromApiKey(String token) {
if(token.equal(abc))
return Bandwidth.classic(10, Refill.intervally(10, Duration.ofSeconds(5)));
return Bandwidth.classic(1, Refill.intervally(1, Duration.ofSeconds(5)));
}
}
桶将每 5 秒重新填充 10 个请求,但我希望它在来自该令牌的所有 10 个请求完成时重新填充(必须完成之前的 10 个请求)。我怎么能这样做?