Class ReceiveQueueBuffer


  • public class ReceiveQueueBuffer
    extends Object
    The ReceiveQueueBuffer class is responsible for dequeueing of messages from a single SQS queue. It uses the provided executor to pre-fetch messages from the server and keeps them in a buffer which it uses to satisfy incoming requests. The number of requests pre-fetched and kept in the buffer, as well as the maximum number of threads used to retrieve the messages are configurable.

    Synchronization strategy: - Threads must hold the TaskSpawnSyncPoint object monitor to spawn a new task or modify the number of inflight tasks - Threads must hold the monitor of the "futures" list to modify the list - Threads must hold the monitor of the "finishedTasks" list to modify the list - If you need to lock both futures and finishedTasks, lock futures first and finishedTasks second

    • Method Detail

      • shutdown

        public void shutdown()
        Prevents spawning of new retrieval batches and waits for all in-flight retrieval batches to finish
      • receiveMessageAsync

        public com.amazonaws.services.sqs.buffered.QueueBufferFuture<ReceiveMessageRequest,​ReceiveMessageResult> receiveMessageAsync​(ReceiveMessageRequest rq,
                                                                                                                                           com.amazonaws.services.sqs.buffered.QueueBufferCallback<ReceiveMessageRequest,​ReceiveMessageResult> callback)
        Submits the request for retrieval of messages from the queue and returns a future that will be signalled when the request is satisfied. The future may already be signalled by the time it is returned.
        Returns:
        never null
      • clear

        public void clear()
        Clears and nacks any pre-fetched messages in this buffer.