public class DistributedPriorityQueue<T> extends Object implements Closeable, QueueBase<T>
An implementation of the Distributed Priority Queue ZK recipe.
Internally, this uses a DistributedQueue. The only difference is that you specify a
priority when putting into the queue.
IMPORTANT NOTE: The priority queue will perform far worse than a standard queue. Every time an item is added to/removed from the queue, every watcher must re-get all the nodes
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
boolean |
flushPuts(long waitTime,
TimeUnit timeUnit)
Wait until any pending puts are committed
|
int |
getLastMessageCount()
Return the most recent message count from the queue.
|
org.apache.curator.framework.listen.ListenerContainer<QueuePutListener<T>> |
getPutListenerContainer()
Return the manager for put listeners
|
void |
put(T item,
int priority)
Add an item into the queue.
|
boolean |
put(T item,
int priority,
int maxWait,
TimeUnit unit)
Same as
put(Object, int) but allows a maximum wait time if an upper bound was set
via QueueBuilder.maxItems. |
void |
putMulti(MultiItem<T> items,
int priority)
Add a set of items with the same priority into the queue.
|
boolean |
putMulti(MultiItem<T> items,
int priority,
int maxWait,
TimeUnit unit)
Same as
putMulti(MultiItem, int) but allows a maximum wait time if an upper bound was set
via QueueBuilder.maxItems. |
void |
setErrorMode(ErrorMode newErrorMode)
Used when the queue is created with a
QueueBuilder.lockPath(String). |
void |
start()
Start the queue.
|
public void start()
throws Exception
public void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableIOExceptionpublic void put(T item, int priority) throws Exception
QueueBuilder.maxItems, this method will
block until there is available space in the queue.item - item to addpriority - item's priority - lower numbers come out of the queue firstException - connection issuespublic boolean put(T item, int priority, int maxWait, TimeUnit unit) throws Exception
put(Object, int) but allows a maximum wait time if an upper bound was set
via QueueBuilder.maxItems.item - item to addpriority - item's priority - lower numbers come out of the queue firstmaxWait - maximum waitunit - wait unitExceptionpublic void putMulti(MultiItem<T> items, int priority) throws Exception
QueueBuilder.maxItems, this method will
block until there is available space in the queue.items - items to addpriority - item priority - lower numbers come out of the queue firstException - connection issuespublic boolean putMulti(MultiItem<T> items, int priority, int maxWait, TimeUnit unit) throws Exception
putMulti(MultiItem, int) but allows a maximum wait time if an upper bound was set
via QueueBuilder.maxItems.items - items to addpriority - item priority - lower numbers come out of the queue firstmaxWait - maximum waitunit - wait unitExceptionpublic void setErrorMode(ErrorMode newErrorMode)
QueueBaseQueueBuilder.lockPath(String). Determines
the behavior when the queue consumer throws an exceptionsetErrorMode in interface QueueBase<T>newErrorMode - the new error mode (the default is ErrorMode.REQUEUEpublic boolean flushPuts(long waitTime,
TimeUnit timeUnit)
throws InterruptedException
QueueBaseflushPuts in interface QueueBase<T>waitTime - max wait timetimeUnit - time unitInterruptedException - if thread was interruptedpublic org.apache.curator.framework.listen.ListenerContainer<QueuePutListener<T>> getPutListenerContainer()
getPutListenerContainer in interface QueueBase<T>public int getLastMessageCount()
getLastMessageCount in interface QueueBase<T>Copyright © 2011–2018 The Apache Software Foundation. All rights reserved.