반응형

Guava RateLimiter
Google의 Guava RateLimiter는 초당 몇 개의 요청을 처리할지 결정하는 라이브러리이다.
ex) 1초에 최대 5개의 요청만 허용 같은 제한을 쉽게 설정할 수 있다.
기본기능
타입 | 메서드 | 설명 |
static RateLimiter | create(double permitsPerSecond) | 입력받은 "초당 허용량"을 가진 RateLimiter생성 |
double | acquire() | 1회 허가 요청 후 요청이 승인될때 까지 대기 |
RateLimiter rateLimiter = RateLimiter.create(2);
for (int i = 0; i < Integer.MAX_VALUE; i++) {
rateLimiter.acquire();
System.out.println(i);
}

초당 횟수를 정해놓고
rateLimiter.acquire();로 시간을 조절해서 요청을 처리하는 것이다. => 이 개념이 헷갈려서 계속 찾아봤음..
public class RateLimiterTest {
public static void main(String[] args) {
// 1분에 50회 요청 가능 (즉, 초당 약 0.8333회)
RateLimiter rateLimiter = RateLimiter.create(50.0 / 60.0);
for (int i = 1; i <= 10; i++) {
double waitTime = rateLimiter.acquire(); // 요청 전에 대기 시간 발생
System.out.println("Request " + i + " sent after waiting " + waitTime + " seconds");
}
}
}
분당으로 처리하기 위해서는 50회 / 60초 를 하면 초당 몇회를 해야할 지 나온다.

반응형