Interface DistributionState

All Known Subinterfaces:
MutableDistributionState
All Known Implementing Classes:
DbDistributionState

public interface DistributionState
  • Method Details

    • hasRetriableDistribution

      boolean hasRetriableDistribution(long distributionKey)
      Returns whether there are any retriable distributions for a given key.
      Parameters:
      distributionKey - the key of the distribution
      Returns:
      true if there are retriable distributions for the given key, otherwise false
    • hasPendingDistribution

      boolean hasPendingDistribution(long distributionKey)
      Returns whether there are any pending distributions for a given key.
      Parameters:
      distributionKey - the key of the distribution
      Returns:
      true if there are pending distributions for the given key, otherwise false
    • hasRetriableDistribution

      boolean hasRetriableDistribution(long distributionKey, int partition)
      Returns whether a specific distribution for a specific partition is retriable.
      Parameters:
      distributionKey - the key of the distribution that may be retriable
      partition - the id of the partition for which the distribution might be retriable
      Returns:
      true if the specific retriable distribution exists, otherwise false.
    • hasPendingDistribution

      boolean hasPendingDistribution(long distributionKey, int partition)
      Returns whether a specific distribution for a specific partition is pending.
      Parameters:
      distributionKey - the key of the distribution that may be pending
      partition - the id of the partition for which the distribution might be pending
      Returns:
      true if the specific pending distribution exists, otherwise false.
    • getCommandDistributionRecord

      CommandDistributionRecord getCommandDistributionRecord(long distributionKey, int partition)
      Returns the CommandDistributionRecord for the given distribution key. This method takes a partition id. This is only used to set the partition property in the CommandDistributionRecord. Doing so allows us to return a whole record, without the need to remember setting the partition everytime this method is called.
      Parameters:
      distributionKey - the key of the distribution
      partition - the partition to distribute to
      Returns:
      an new instance of the CommandDistributionRecord
    • foreachRetriableDistribution

      void foreachRetriableDistribution(DistributionState.PendingDistributionVisitor visitor)
      Visits each persisted retriable distribution, providing both the key of that distribution and the CommandDistributionRecord.

      Note that a new instance of the record is provided for each visit, so the visitor does not have to make a copy when long term access is needed.

      Parameters:
      visitor - Each retriable distribution is visited by this visitor
    • getNextQueuedDistributionKey

      Optional<Long> getNextQueuedDistributionKey(String queue, int partition)
      Returns the distribution key at the head of the queue for the given partition.
      Parameters:
      queue - the queue to look up
      partition - the partition id within the queue
      Returns:
      the distribution key at the head of the queues or an empty optional if there is no queued distribution for that queue and partition.
    • getQueueIdForDistribution

      Optional<String> getQueueIdForDistribution(long distributionKey)
      Returns the queue for the given distribution or an empty optional if this distribution was not queued.
    • hasQueuedDistributions

      boolean hasQueuedDistributions(String queue)
      Returns whether there are any queued distributions for the given queue.
      Parameters:
      queue - the queue to look up
      Returns:
      true if there are queued distributions for the given queue, otherwise false
    • forEachContinuationCommand

      void forEachContinuationCommand(String queue, DistributionState.ContinuationCommandVisitor consumer)
      Visits each continuation command registered for the given queue.
    • getContinuationRecord

      CommandDistributionRecord getContinuationRecord(String queue, long key)
      Returns the continuation command for the given key and queue or null if no such command exists.