Bucket4: применяйте несколько ограничений скорости

#java #rate-limiting

Вопрос:

Я хотел бы применить несколько ограничений скорости, используя Bucket4j. Таким образом, один лимит скорости на основе номера учетной записи (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) amp;amp; applicationBucket.tryConsume(1)) {
... make request
}