Interface RBlockingQueueAsync<V>

Type Parameters:
V - the type of elements held in this collection
All Superinterfaces:
RCollectionAsync<V>, RExpirableAsync, RObjectAsync, RQueueAsync<V>
All Known Subinterfaces:
RBlockingDeque<V>, RBlockingDequeAsync<V>, RBlockingQueue<V>, RBoundedBlockingQueue<V>, RBoundedBlockingQueueAsync<V>, RPriorityBlockingDeque<V>, RPriorityBlockingQueue<V>, RTransferQueue<V>, RTransferQueueAsync<V>
All Known Implementing Classes:
RedissonBlockingDeque, RedissonBlockingQueue, RedissonBoundedBlockingQueue, RedissonPriorityBlockingDeque, RedissonPriorityBlockingQueue, RedissonTransferQueue

public interface RBlockingQueueAsync<V> extends RQueueAsync<V>
Distributed async implementation of BlockingQueue
Author:
Nikita Koksharov
  • Method Details

    • pollFromAnyAsync

      RFuture<V> pollFromAnyAsync(long timeout, TimeUnit unit, String... queueNames)
      Retrieves and removes first available head element of any queue in async mode, waiting up to the specified wait time if necessary for an element to become available in any of defined queues including queue itself.
      Parameters:
      timeout - how long to wait before giving up, in units of unit
      unit - a TimeUnit determining how to interpret the timeout parameter
      queueNames - - queue names. Queue name itself is always included
      Returns:
      Future object with the head of this queue, or null if the specified waiting time elapses before an element is available
    • pollFromAnyWithNameAsync

      RFuture<Entry<String,V>> pollFromAnyWithNameAsync(Duration timeout, String... queueNames)
      Retrieves and removes first available head element of any queue in async mode, waiting up to the specified wait time if necessary for an element to become available in any of defined queues including queue itself.
      Parameters:
      timeout - how long to wait before giving up
      queueNames - - queue names. Queue name itself is always included
      Returns:
      Future object with the head of this queue, or null if the specified waiting time elapses before an element is available
    • pollFirstFromAnyAsync

      RFuture<Map<String,List<V>>> pollFirstFromAnyAsync(Duration duration, int count, String... queueNames)
      Retrieves and removes first available head elements of any queue, waiting up to the specified wait time if necessary for an element to become available in any of defined queues including queue itself.

      Requires Redis 7.0.0 and higher.

      Parameters:
      duration - how long to wait before giving up
      count - elements amount
      queueNames - name of queues
      Returns:
      the head elements
    • pollLastFromAnyAsync

      RFuture<Map<String,List<V>>> pollLastFromAnyAsync(Duration duration, int count, String... queueNames)
      Retrieves and removes first available tail elements of any queue, waiting up to the specified wait time if necessary for an element to become available in any of defined queues including queue itself.

      Requires Redis 7.0.0 and higher.

      Parameters:
      duration - how long to wait before giving up
      count - elements amount
      queueNames - name of queues
      Returns:
      the tail elements
    • drainToAsync

      RFuture<Integer> drainToAsync(Collection<? super V> c, int maxElements)
      Removes at most the given number of available elements from this queue and adds them to the given collection in async mode. A failure encountered while attempting to add elements to collection c may result in elements being in neither, either or both collections when the associated exception is thrown. Attempts to drain a queue to itself result in IllegalArgumentException. Further, the behavior of this operation is undefined if the specified collection is modified while the operation is in progress.
      Parameters:
      c - the collection to transfer elements into
      maxElements - the maximum number of elements to transfer
      Returns:
      the number of elements transferred
      Throws:
      UnsupportedOperationException - if addition of elements is not supported by the specified collection
      ClassCastException - if the class of an element of this queue prevents it from being added to the specified collection
      NullPointerException - if the specified collection is null
      IllegalArgumentException - if the specified collection is this queue, or some property of an element of this queue prevents it from being added to the specified collection
    • drainToAsync

      RFuture<Integer> drainToAsync(Collection<? super V> c)
      Removes all available elements from this queue and adds them to the given collection in async mode. This operation may be more efficient than repeatedly polling this queue. A failure encountered while attempting to add elements to collection c may result in elements being in neither, either or both collections when the associated exception is thrown. Attempts to drain a queue to itself result in IllegalArgumentException. Further, the behavior of this operation is undefined if the specified collection is modified while the operation is in progress.
      Parameters:
      c - the collection to transfer elements into
      Returns:
      the number of elements transferred
      Throws:
      UnsupportedOperationException - if addition of elements is not supported by the specified collection
      ClassCastException - if the class of an element of this queue prevents it from being added to the specified collection
      NullPointerException - if the specified collection is null
      IllegalArgumentException - if the specified collection is this queue, or some property of an element of this queue prevents it from being added to the specified collection
    • pollLastAndOfferFirstToAsync

      RFuture<V> pollLastAndOfferFirstToAsync(String queueName, long timeout, TimeUnit unit)
      Retrieves and removes last available tail element of this queue and adds it at the head of queueName, waiting up to the specified wait time if necessary for an element to become available.
      Parameters:
      queueName - - names of destination queue
      timeout - how long to wait before giving up, in units of unit
      unit - a TimeUnit determining how to interpret the timeout parameter
      Returns:
      the tail of this queue, or null if the specified waiting time elapses before an element is available
    • takeLastAndOfferFirstToAsync

      RFuture<V> takeLastAndOfferFirstToAsync(String queueName)
      Retrieves and removes last available tail element of any queue and adds it at the head of queueName, waiting if necessary for an element to become available in any of defined queues including queue itself.
      Parameters:
      queueName - - names of destination queue
      Returns:
      the tail of this queue, or null if the specified waiting time elapses before an element is available
    • pollAsync

      RFuture<V> pollAsync(long timeout, TimeUnit unit)
      Retrieves and removes the head of this queue in async mode, waiting up to the specified wait time if necessary for an element to become available.
      Parameters:
      timeout - how long to wait before giving up, in units of unit
      unit - a TimeUnit determining how to interpret the timeout parameter
      Returns:
      the head of this queue, or null if the specified waiting time elapses before an element is available
    • takeAsync

      RFuture<V> takeAsync()
      Retrieves and removes the head of this queue in async mode, waiting if necessary until an element becomes available.
      Returns:
      the head of this queue
    • putAsync

      RFuture<Void> putAsync(V e)
      Inserts the specified element into this queue in async mode, waiting if necessary for space to become available.
      Parameters:
      e - the element to add
      Returns:
      void
      Throws:
      ClassCastException - if the class of the specified element prevents it from being added to this queue
      NullPointerException - if the specified element is null
      IllegalArgumentException - if some property of the specified element prevents it from being added to this queue