Class RateLimitQueue<SUPPLIER,​MSG extends QueueMessage>

java.lang.Object
com.slack.api.rate_limits.queue.RateLimitQueue<SUPPLIER,​MSG>
Direct Known Subclasses:
AsyncRateLimitQueue, AsyncRateLimitQueue, AsyncRateLimitQueue

public abstract class RateLimitQueue<SUPPLIER,​MSG extends QueueMessage>
extends java.lang.Object
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.util.concurrent.ConcurrentMap<java.lang.String,​java.util.concurrent.LinkedBlockingQueue<MSG>> methodNameToActiveQueue  
  • Constructor Summary

    Constructors 
    Constructor Description
    RateLimitQueue()  
  • Method Summary

    Modifier and Type Method Description
    protected abstract MSG buildNewMessage​(java.lang.String messageId, long epochMillisToRun, WaitTime waitTime, SUPPLIER methodsSupplier)  
    SUPPLIER dequeueIfReady​(java.lang.String messageId, java.lang.String teamId, java.lang.String methodName, java.util.Map<java.lang.String,​java.lang.String> params)  
    void enqueue​(java.lang.String messageId, java.lang.String teamId, java.lang.String methodName, java.util.Map<java.lang.String,​java.lang.String> params, SUPPLIER methodsSupplier)  
    java.lang.Integer getCurrentActiveQueueSize​(java.lang.String methodNameWithSuffix)  
    protected java.util.concurrent.LinkedBlockingQueue<MSG> getOrCreateActiveQueue​(java.lang.String methodName)  
    protected abstract RateLimiter getRateLimiter()  
    void remove​(java.lang.String methodName, java.lang.String messageId)  

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • methodNameToActiveQueue

      protected final java.util.concurrent.ConcurrentMap<java.lang.String,​java.util.concurrent.LinkedBlockingQueue<MSG extends QueueMessage>> methodNameToActiveQueue
  • Constructor Details

  • Method Details

    • getRateLimiter

      protected abstract RateLimiter getRateLimiter()
    • getOrCreateActiveQueue

      protected java.util.concurrent.LinkedBlockingQueue<MSG> getOrCreateActiveQueue​(java.lang.String methodName)
    • dequeueIfReady

      public SUPPLIER dequeueIfReady​(java.lang.String messageId, java.lang.String teamId, java.lang.String methodName, java.util.Map<java.lang.String,​java.lang.String> params)
    • buildNewMessage

      protected abstract MSG buildNewMessage​(java.lang.String messageId, long epochMillisToRun, WaitTime waitTime, SUPPLIER methodsSupplier)
    • enqueue

      public void enqueue​(java.lang.String messageId, java.lang.String teamId, java.lang.String methodName, java.util.Map<java.lang.String,​java.lang.String> params, SUPPLIER methodsSupplier) throws java.lang.InterruptedException
      Throws:
      java.lang.InterruptedException
    • remove

      public void remove​(java.lang.String methodName, java.lang.String messageId)
    • getCurrentActiveQueueSize

      public java.lang.Integer getCurrentActiveQueueSize​(java.lang.String methodNameWithSuffix)