Class QueueDispatchPendingList
- java.lang.Object
-
- org.apache.activemq.broker.region.cursors.QueueDispatchPendingList
-
- All Implemented Interfaces:
Iterable<org.apache.activemq.broker.region.MessageReference>
,PendingList
public class QueueDispatchPendingList extends Object implements PendingList
An abstraction that keeps the correct order of messages that need to be dispatched to consumers, but also hides the fact that there might be redelivered messages that should be dispatched ahead of any other paged in messages. Direct usage of this class is recommended as you can control when redeliveries need to be added vs regular pending messages (the next set of messages that can be dispatched) Created by ceposta-
-
Constructor Summary
Constructors Constructor Description QueueDispatchPendingList()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAll(PendingList pendingList)
Adds all the elements of the given PendingList to this PendingList.void
addForRedelivery(List<org.apache.activemq.broker.region.MessageReference> list, boolean noConsumers)
PendingNode
addMessageFirst(org.apache.activemq.broker.region.MessageReference message)
Messages added are added directly to the pagedInPendingDispatch set of messages.PendingNode
addMessageLast(org.apache.activemq.broker.region.MessageReference message)
Messages added are added directly to the pagedInPendingDispatch set of messages.void
clear()
Discards all Messages currently held in the PendingList.boolean
contains(org.apache.activemq.broker.region.MessageReference message)
Query the PendingList to determine if the given message is contained within.org.apache.activemq.broker.region.MessageReference
get(org.apache.activemq.command.MessageId messageId)
boolean
hasRedeliveries()
boolean
isEmpty()
Returns true if there are no Messages in the PendingList currently.Iterator<org.apache.activemq.broker.region.MessageReference>
iterator()
Returns an iterator over the pending Messages.long
messageSize()
PendingNode
remove(org.apache.activemq.broker.region.MessageReference message)
Removes the given MessageReference from the PendingList if it is contained within.void
setPrioritizedMessages(boolean prioritizedMessages)
int
size()
Returns the number of MessageReferences that are awaiting dispatch.Collection<org.apache.activemq.broker.region.MessageReference>
values()
Returns a new Collection that contains all the MessageReferences currently held in this PendingList.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Method Detail
-
isEmpty
public boolean isEmpty()
Description copied from interface:PendingList
Returns true if there are no Messages in the PendingList currently.- Specified by:
isEmpty
in interfacePendingList
- Returns:
- true if the PendingList is currently empty.
-
clear
public void clear()
Description copied from interface:PendingList
Discards all Messages currently held in the PendingList.- Specified by:
clear
in interfacePendingList
-
addMessageFirst
public PendingNode addMessageFirst(org.apache.activemq.broker.region.MessageReference message)
Messages added are added directly to the pagedInPendingDispatch set of messages. If you're trying to add a message that is marked redelivered add it using addMessageForRedelivery() method- Specified by:
addMessageFirst
in interfacePendingList
- Parameters:
message
- The MessageReference that is to be added to this list.- Returns:
- the pending node.
-
addMessageLast
public PendingNode addMessageLast(org.apache.activemq.broker.region.MessageReference message)
Messages added are added directly to the pagedInPendingDispatch set of messages. If you're trying to add a message that is marked redelivered add it using addMessageForRedelivery() method- Specified by:
addMessageLast
in interfacePendingList
- Parameters:
message
- The MessageReference that is to be added to this list.- Returns:
- the pending node.
-
remove
public PendingNode remove(org.apache.activemq.broker.region.MessageReference message)
Description copied from interface:PendingList
Removes the given MessageReference from the PendingList if it is contained within.- Specified by:
remove
in interfacePendingList
- Parameters:
message
- The MessageReference that is to be removed to this list.- Returns:
- the PendingNode that contains the removed message or null if the message was not present in this list.
-
size
public int size()
Description copied from interface:PendingList
Returns the number of MessageReferences that are awaiting dispatch.- Specified by:
size
in interfacePendingList
- Returns:
- current count of the pending messages.
-
messageSize
public long messageSize()
- Specified by:
messageSize
in interfacePendingList
-
iterator
public Iterator<org.apache.activemq.broker.region.MessageReference> iterator()
Description copied from interface:PendingList
Returns an iterator over the pending Messages. The subclass controls how the returned iterator actually traverses the list of pending messages allowing for the order to vary based on factors like Message priority or some other mechanism.- Specified by:
iterator
in interfaceIterable<org.apache.activemq.broker.region.MessageReference>
- Specified by:
iterator
in interfacePendingList
- Returns:
- an Iterator that returns MessageReferences contained in this list.
-
contains
public boolean contains(org.apache.activemq.broker.region.MessageReference message)
Description copied from interface:PendingList
Query the PendingList to determine if the given message is contained within.- Specified by:
contains
in interfacePendingList
- Parameters:
message
- The Message that is the target of this query.- Returns:
- true if the MessageReference is contained in this list.
-
values
public Collection<org.apache.activemq.broker.region.MessageReference> values()
Description copied from interface:PendingList
Returns a new Collection that contains all the MessageReferences currently held in this PendingList. The elements of the list are ordered using the same rules as the subclass uses for iteration.- Specified by:
values
in interfacePendingList
- Returns:
- a new Collection containing this lists MessageReferences.
-
addAll
public void addAll(PendingList pendingList)
Description copied from interface:PendingList
Adds all the elements of the given PendingList to this PendingList.- Specified by:
addAll
in interfacePendingList
- Parameters:
pendingList
- The PendingList that is to be added to this collection.
-
get
public org.apache.activemq.broker.region.MessageReference get(org.apache.activemq.command.MessageId messageId)
- Specified by:
get
in interfacePendingList
-
setPrioritizedMessages
public void setPrioritizedMessages(boolean prioritizedMessages)
-
hasRedeliveries
public boolean hasRedeliveries()
-
addForRedelivery
public void addForRedelivery(List<org.apache.activemq.broker.region.MessageReference> list, boolean noConsumers)
-
-