Class DistributedQueue<T>
java.lang.Object
org.apache.curator.framework.recipes.queue.DistributedQueue<T>
- All Implemented Interfaces:
Closeable,AutoCloseable,QueueBase<T>
An implementation of the Distributed Queue ZK recipe. Items put into the queue are guaranteed to be ordered (by means of ZK's PERSISTENT_SEQUENTIAL node).
Guarantees:
- If a single consumer takes items out of the queue, they will be ordered FIFO. i.e. if ordering is important,
use a
LeaderSelectorto nominate a single consumer. - Unless a
QueueBuilder.lockPath(String)is used, there is only guaranteed processing of each message to the point of receipt by a given instance. - If an instance receives an item from the queue but dies while processing it, the item will be lost. If you need message recoverability, use
a
QueueBuilder.lockPath(String)
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()booleanWait until any pending puts are committedprotected longintReturn the most recent message count from the queue.org.apache.curator.framework.listen.Listenable<QueuePutListener<T>> Return the manager for put listenersprotected StringmakeRequeueItemPath(String itemPath) protected booleanprocessWithLockSafety(String itemNode, DistributedQueue.ProcessType type) voidAdd an item into the queue.booleanSame asput(Object)but allows a maximum wait time if an upper bound was set viaQueueBuilder.maxItems.voidAdd a set of items into the queue.booleanSame asputMulti(MultiItem)but allows a maximum wait time if an upper bound was set viaQueueBuilder.maxItems.voidsetErrorMode(ErrorMode newErrorMode) Used when the queue is created with aQueueBuilder.lockPath(String).protected voidsortChildren(List<String> children) voidstart()Start the queue.protected boolean
-
Method Details
-
start
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
getPutListenerContainer
public org.apache.curator.framework.listen.Listenable<QueuePutListener<T>> getPutListenerContainer()Return the manager for put listeners- Specified by:
getPutListenerContainerin interfaceQueueBase<T>- Returns:
- put listener container
-
setErrorMode
Used when the queue is created with aQueueBuilder.lockPath(String). Determines the behavior when the queue consumer throws an exception- Specified by:
setErrorModein interfaceQueueBase<T>- Parameters:
newErrorMode- the new error mode (the default isErrorMode.REQUEUE
-
flushPuts
Wait until any pending puts are committed- Specified by:
flushPutsin interfaceQueueBase<T>- Parameters:
waitTime- max wait timetimeUnit- time unit- Returns:
- true if the flush was successful, false if it timed out first
- Throws:
InterruptedException- if thread was interrupted
-
put
Add an item into the queue. Adding is done in the background - thus, this method will return quickly.
NOTE: if an upper bound was set viaQueueBuilder.maxItems, this method will block until there is available space in the queue.- Parameters:
item- item to add- Throws:
Exception- connection issues
-
put
Same asput(Object)but allows a maximum wait time if an upper bound was set viaQueueBuilder.maxItems.- Parameters:
item- item to addmaxWait- maximum waitunit- wait unit- Returns:
- true if items was added, false if timed out
- Throws:
Exception
-
putMulti
Add a set of items into the queue. Adding is done in the background - thus, this method will return quickly.
NOTE: if an upper bound was set viaQueueBuilder.maxItems, this method will block until there is available space in the queue.- Parameters:
items- items to add- Throws:
Exception- connection issues
-
putMulti
Same asputMulti(MultiItem)but allows a maximum wait time if an upper bound was set viaQueueBuilder.maxItems.- Parameters:
items- items to addmaxWait- maximum waitunit- wait unit- Returns:
- true if items was added, false if timed out
- Throws:
Exception
-
getLastMessageCount
public int getLastMessageCount()Return the most recent message count from the queue. This is useful for debugging/information purposes only.- Specified by:
getLastMessageCountin interfaceQueueBase<T>- Returns:
- count (can be 0)
-
sortChildren
-
getChildren
-
getDelay
-
tryRemove
-
processWithLockSafety
protected boolean processWithLockSafety(String itemNode, DistributedQueue.ProcessType type) throws Exception - Throws:
Exception
-
makeRequeueItemPath
-