Throttle

object Throttle

Transform a service to reject any calls the go over a given rate.

class Object
trait Matchable
class Any

Type members

Classlikes

sealed abstract class TokenAvailability extends Product with Serializable
case object TokenAvailable extends TokenAvailability
trait TokenBucket[F[_]]

A token bucket for use with the Throttle middleware. Consumers can take tokens which will be refilled over time. Implementations are required to provide their own refill mechanism.

A token bucket for use with the Throttle middleware. Consumers can take tokens which will be refilled over time. Implementations are required to provide their own refill mechanism.

Possible implementations include a remote TokenBucket service to coordinate between different application instances.

Companion
object
object TokenBucket
Companion
class
final case class TokenUnavailable(retryAfter: Option[FiniteDuration]) extends TokenAvailability

Value members

Concrete methods

def apply[F[_], G[_]](amount: Int, per: FiniteDuration)(http: Http[F, G])(implicit F: Temporal[F]): F[Http[F, G]]

Limits the supplied service to a given rate of calls using an in-memory TokenBucket

Limits the supplied service to a given rate of calls using an in-memory TokenBucket

Value Params
amount

the number of calls to the service to permit within the given time period.

http

the service to transform.

per

the time period over which a given number of calls is permitted.

Returns

a task containing the transformed service.

def apply[F[_], G[_]](bucket: TokenBucket[F], throttleResponse: Option[FiniteDuration] => Response[G])(http: Http[F, G])(implicit F: Monad[F]): Http[F, G]

Limits the supplied service using a provided TokenBucket

Limits the supplied service using a provided TokenBucket

Value Params
bucket

a TokenBucket to use to track the rate of incoming requests.

http

the service to transform.

throttleResponse

a function that defines the response when throttled, may be supplied a suggested retry time depending on bucket implementation.

Returns

a task containing the transformed service.

def defaultResponse[F[_]](retryAfter: Option[FiniteDuration]): Response[F]