TokenBucketRateLimiter

Token Bucket 알고리즘을 기반으로 한 Rate Limiter 구현

Token Bucket 알고리즘의 특징:

  • 일정한 속도로 토큰이 버킷에 채워집니다 (refillRate)

  • 최대 용량(capacity)까지만 토큰이 누적됩니다

  • API 요청이 필요할 때 버킷에서 토큰을 꺼냅니다

  • 토큰이 부족하면 대기합니다

이 구현은 Coroutine Mutex를 사용하여 스레드 안전성을 보장합니다.

Constructors

Link copied to clipboard
constructor(source: String, config: RateLimitConfig)

Functions

Link copied to clipboard
open suspend override fun acquire(tokensNeeded: Int)

지정된 개수의 토큰을 소비합니다.

Link copied to clipboard
open override fun getAvailableTokens(): Int

현재 사용 가능한 토큰의 개수를 반환합니다.

Link copied to clipboard
open override fun getStatus(): RateLimiterStatus

Rate Limiter의 현재 상태를 반환합니다.

Link copied to clipboard
open override fun getWaitTimeMillis(): Long

1개 토큰을 획득하는 데 필요한 대기 시간을 밀리초로 반환합니다.

Link copied to clipboard
open override fun toString(): String

현재 Rate Limiter 상태의 상세 정보를 문자열로 반환합니다.