Class RocksDbQueue<ID,​DATA>

  • All Implemented Interfaces:
    IQueue<ID,​DATA>, AutoCloseable
    Direct Known Subclasses:
    BaseUniversalRocksDbQueue

    public abstract class RocksDbQueue<ID,​DATA>
    extends AbstractEphemeralSupportQueue<ID,​DATA>
    RocksDB implementation of IQueue.

    Implementation:

    • RocksDB as queue storage

    Features:

    • Queue-size support: yes
    • Ephemeral storage support: yes
    • Ephemeral-size support: yes
    Since:
    0.4.0
    Author:
    Thanh Ba Nguyen
    • Constructor Detail

      • RocksDbQueue

        public RocksDbQueue()
    • Method Detail

      • getStorageDir

        public String getStorageDir()
        Directory to store RocksDB data files.
        Returns:
      • setStorageDir

        public RocksDbQueue<ID,​DATA> setStorageDir​(String storageDir)
        Directory to store RocksDB data files.
        Parameters:
        storageDir -
        Returns:
      • getCfNameQueue

        public String getCfNameQueue()
        Name of the column-family to store queue messages.
        Returns:
        Since:
        0.4.0.1
      • setCfNameQueue

        public RocksDbQueue<ID,​DATA> setCfNameQueue​(String cfNameQueue)
        Name of the column-family to store queue messages.
        Parameters:
        cfNameQueue -
        Returns:
        Since:
        0.4.0.1
      • getCfNameMetadata

        public String getCfNameMetadata()
        Name of the column-family to store metadata.
        Returns:
        Since:
        0.4.0.1
      • setCfNameMetadata

        public RocksDbQueue<ID,​DATA> setCfNameMetadata​(String cfNameMetadata)
        Name of the column-family to store metadata.
        Parameters:
        cfNameMetadata -
        Returns:
        Since:
        0.4.0.1
      • getCfNameEphemeral

        public String getCfNameEphemeral()
        Name of the column-family to store ephemeral messages.
        Returns:
        Since:
        0.4.0.1
      • setCfNameEphemeral

        public RocksDbQueue<ID,​DATA> setCfNameEphemeral​(String cfNameEphemeral)
        Name of the column-family to store ephemeral messages.
        Parameters:
        cfNameEphemeral -
        Returns:
        Since:
        0.4.0.1
      • finish

        public void finish​(IQueueMessage<ID,​DATA> msg)
        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.

      • take

        public IQueueMessage<ID,​DATA> take()
                                          throws QueueException.EphemeralIsFull
        Take a message out of queue.

        Implementation flow:

        • Read message from head of queue storage.
        • Write message to ephemeral storage.
        • Remove message from queue storage.

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

        Returns:
        Throws:
        QueueException.EphemeralIsFull - if the ephemeral storage is full
      • getOrphanMessages

        public Collection<IQueueMessage<ID,​DATA>> getOrphanMessages​(long thresholdTimestampMs)
        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
      • queueSize

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

        public int ephemeralSize()
        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