Add a message onto the queue.
Add a message onto the queue. Note that this doesn't do any deduplication, that should've happened in an earlier step.
The message to add onto the queue
Get the messages indexed by their unique id
Get the messages indexed by their unique id
The messages indexed by their id
Drop all messages on the queue
Dequeues count
messages from the queue
Dequeues count
messages from the queue
The number of messages to dequeue from the queue
The timestamp from which messages should be available (usually, this is the current millis since epoch. It is useful to pass in a special value during the tests however.)
The dequeued messages, if any
Return a message queue where all the messages on the queue do not match the given predicate function
Return a message queue where all the messages on the queue do not match the given predicate function
The predicate function to filter the message by. Any message that does not match the predicate will be retained on the new queue
The new message queue
Remove the message with the given id
Remove the message with the given id
The id of the message to remove
Get the next available message on the given queue
Get the next available message on the given queue
The queue for which to get the next available message. It's assumed the messages on this queue all belong to the same message group.
The timestamp from which messages should be available
An accumulator holding the messages that have already been retrieved.
An accumulator holding the messages that have been dequeued from the priority queue and cannot be delivered. These messages should be put back on the queue before returning to the caller