Object/Class

com.twitter.concurrent

AsyncMeter

Related Docs: class AsyncMeter | package concurrent

Permalink

object AsyncMeter

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AsyncMeter
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def extraWideAwait(permits: Int, meter: AsyncMeter): Future[Unit]

    Permalink

    Allows the user to await on requests that have a wider width than the burstSize specified in AsyncMeter.

    Allows the user to await on requests that have a wider width than the burstSize specified in AsyncMeter.

    WARNING: this means that you are able to arbitrarily exceed your burstSize setting, so it violates the contract that you never exceed burstSize within a given burstDuration. Also, because of the implementation, it consumes more than one slot from maxWaiters.

  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  11. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  12. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  14. def newMeter(burstSize: Int, burstDuration: Duration, maxWaiters: Int)(implicit timer: Timer): AsyncMeter

    Permalink

    Creates an AsyncMeter that has a maximum burst size of burstSize over burstDuration, and no more than maxWaiters waiters.

    Creates an AsyncMeter that has a maximum burst size of burstSize over burstDuration, and no more than maxWaiters waiters. The burstSize permits will be disbursed on a regular schedule, so that they aren't bunched up.

  15. def newUnboundedMeter(burstSize: Int, burstDuration: Duration)(implicit timer: Timer): AsyncMeter

    Permalink

    Creates an AsyncMeter that has a maximum burst size of burstSize over burstDuration, and an unbounded number of waiters.

    Creates an AsyncMeter that has a maximum burst size of burstSize over burstDuration, and an unbounded number of waiters. The burstSize permits will be disbursed on a regular schedule, so that they aren't bunched up.

    WARNING: Only use an unbounded number of waiters when some other aspect of your implementation already bounds the number of waiters. If there is no other bound, the waiters can use up your process' resources.

  16. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. def perSecond(permits: Int, maxWaiters: Int)(implicit timer: Timer): AsyncMeter

    Permalink

    Creates an AsyncMeter that allows smoothed out permits per second, and has a maximum burst size of permits over one second.

    Creates an AsyncMeter that allows smoothed out permits per second, and has a maximum burst size of permits over one second.

    This is equivalent to AsyncMeter.newMeter(permits, 1.second, maxWaiters).

  19. def perSecondLimited(permits: Int, maxWaiters: Int)(implicit timer: Timer): AsyncMeter

    Permalink

    Creates an AsyncMeter that allows smoothed out permits per second, and has a maximum burst size of 1 permit over 1.second / permits.

    Creates an AsyncMeter that allows smoothed out permits per second, and has a maximum burst size of 1 permit over 1.second / permits.

    This method produces AsyncMeters that might be placed before an external API forcing a rate limit over a one second. For example, the following meter rate limits its callers to make sure no more than 8 QPS is sent at any point of time.

    val meter = AsyncMeter.perSecondLimited(8, 100)

    This is equivalent to AsyncMeter.newMeter(1, 1.second / permits, maxWaiters).

    Note

    It's possible to get permits + 1 waiters to continue over the very first second, but the burst should be smoothed out after that.

    ,

    If you don't need an exact limit, you'll be able to handle bursts\ faster by using either newMeter or perSecond.

  20. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  21. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  22. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped