Class QueueSharder<U,T extends QueueBase<U>>
java.lang.Object
org.apache.curator.framework.recipes.queue.QueueSharder<U,T>
- All Implemented Interfaces:
Closeable
,AutoCloseable
A utility for shard a distributed queue.
Due to limitations in ZooKeeper's transport layer, a single queue will break if it has more than 10K-ish items in it. This class provides a facade over multiple distributed queues. It monitors the queues and if any one of them goes over a threshold, a new queue is added. Puts are distributed amongst the queues.
NOTE: item ordering is maintained within each managed queue but cannot be maintained across queues. i.e. items might get consumed out of order if they are in different managed queues.
-
Constructor Summary
ConstructorDescriptionQueueSharder
(CuratorFramework client, QueueAllocator<U, T> queueAllocator, String queuePath, String leaderPath, QueueSharderPolicies policies) -
Method Summary
-
Constructor Details
-
QueueSharder
public QueueSharder(CuratorFramework client, QueueAllocator<U, T> queueAllocator, String queuePath, String leaderPath, QueueSharderPolicies policies) - Parameters:
client
- clientqueueAllocator
- allocator for new queuesqueuePath
- path for the queuesleaderPath
- path for the leader that monitors queue sizes (must be different than queuePath)policies
- sharding policies
-
-
Method Details
-
start
The sharder must be started- Throws:
Exception
- errors
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
getQueue
Return one of the managed queues - the selection method cannot be relied on. It should be considered a random managed queue.- Returns:
- a queue
-
getShardQty
public int getShardQty()Return the current number of mananged queues- Returns:
- qty
-
getQueuePaths
Return the current set of shard paths- Returns:
- paths
-