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. Protected

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def extraWideAwait(permits: Int, meter: AsyncMeter): Future[Unit]

    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
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  10. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. def newMeter(burstSize: Int, burstDuration: Duration, maxWaiters: Int)(implicit timer: Timer): AsyncMeter

    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

    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
    Definition Classes
    AnyRef
    Annotations
    @native()
  17. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. def perSecond(permits: Int, maxWaiters: Int)(implicit timer: Timer): AsyncMeter

    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).

    See also

    perSecondUnbounded for creating an async meter that allows unbounded waiters

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

    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

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

    ,

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

  20. def perSecondUnbounded(permits: Int)(implicit timer: Timer): AsyncMeter

    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 meter is not bounded by the number of allowed waiters. This is equivalent to AsyncMeter.newUnboundedMeter(permits, 1.second, maxWaiters).

    See also

    perSecond for creating an async meter that only allows a certain number of waiters

  21. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  22. def toString(): String
    Definition Classes
    AnyRef → Any
  23. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  24. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  25. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped