Interface IQueue<ID,​DATA>

    • Field Detail

      • SIZE_NOT_SUPPORTED

        static final int SIZE_NOT_SUPPORTED
        Return this value to indicate that get-size functionality is not supported.
        Since:
        0.7.1
        See Also:
        Constant Field Values
    • Method Detail

      • createMessage

        IQueueMessage<ID,​DATA> createMessage()
        Create a new, empty queue message.
        Returns:
        Since:
        0.6.0
      • createMessage

        default IQueueMessage<ID,​DATA> createMessage​(DATA content)
        Create a new queue message with supplied content.
        Parameters:
        content -
        Returns:
        Since:
        0.6.0
      • createMessage

        default IQueueMessage<ID,​DATA> createMessage​(ID id,
                                                           DATA content)
        Create a new queue message with supplied id and content.
        Parameters:
        id -
        content -
        Returns:
        Since:
        0.6.0
      • requeue

        boolean requeue​(IQueueMessage<ID,​DATA> msg)
                 throws QueueException
        Re-queue a message.

        Implementation flow:

        • Put message to the queue storage (head or tail position depends on the queue implementation); and increase message's re-queue count & update message's queue timestamp.
        • Remove message from ephemeral storage.

        Note: ephemeral storage implementation is optional, depends on implementation.

        Parameters:
        msg -
        Returns:
        Throws:
        QueueException.QueueIsFull - if queue storage is full, can not take any more message
        QueueException.CannotSerializeQueueMessage - if the supplied message can not be serialize
        QueueException - other queue exceptions
      • requeueSilent

        boolean requeueSilent​(IQueueMessage<ID,​DATA> msg)
                       throws QueueException
        Silently re-queue a message.

        Implementation flow:

        • Put message to the queue storage (head or tail position depends on the queue implementation); do NOT increase message's re-queue count and do NOT update message's queue timestamp.
        • Remove message from ephemeral storage.

        Note: ephemeral storage implementation is optional, depends on implementation.

        Parameters:
        msg -
        Returns:
        Throws:
        QueueException.QueueIsFull - if queue storage is full, can not take any more message
        QueueException.CannotSerializeQueueMessage - if the supplied message can not be serialize
        QueueException - other queue exceptions
      • finish

        void finish​(IQueueMessage<ID,​DATA> msg)
             throws QueueException
        Called when finish processing the message to cleanup ephemeral storage.

        Implementation flow:

        • Remove message from ephemeral storage.

        Note: ephemeral storage implementation is optional, depends on implementation.

        Parameters:
        msg -
        Throws:
        QueueException
      • getOrphanMessages

        Collection<IQueueMessage<ID,​DATA>> getOrphanMessages​(long thresholdTimestampMs)
                                                            throws QueueException.OperationNotSupported
        Get all orphan messages (messages that were left in ephemeral storage for a long time).
        Parameters:
        thresholdTimestampMs - message is orphan if message's timestampMillis + thresholdTimestampMs < now . Which means getOrphanMessages(10000) will return orphan messages that have stayed in ephemeral storage for more than 10000 milliseconds.
        Returns:
        null or empty collection if there is no orphan message
        Throws:
        QueueException.OperationNotSupported
        Since:
        0.2.0
      • queueSize

        int queueSize()
               throws QueueException
        Get number of items currently in queue storage.
        Returns:
        negative number if queue size can not be queried
        Throws:
        QueueException
      • ephemeralSize

        int ephemeralSize()
                   throws QueueException
        Get number of items currently in ephemeral storage.

        Note: ephemeral storage implementation is optional, depends on implementation.

        Returns:
        negative number if ephemeral size can not be queried
        Throws:
        QueueException