java.io.Closeable, java.lang.AutoCloseablepublic class QueueSharder<U,T extends QueueBase<U>>
extends java.lang.Object
implements java.io.Closeable
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 | Description |
|---|---|
QueueSharder(org.apache.curator.framework.CuratorFramework client,
QueueAllocator<U,T> queueAllocator,
java.lang.String queuePath,
java.lang.String leaderPath,
QueueSharderPolicies policies) |
| Modifier and Type | Method | Description |
|---|---|---|
void |
close() |
|
T |
getQueue() |
Return one of the managed queues - the selection method cannot be relied on.
|
java.util.Collection<java.lang.String> |
getQueuePaths() |
Return the current set of shard paths
|
int |
getShardQty() |
Return the current number of mananged queues
|
void |
start() |
The sharder must be started
|
public QueueSharder(org.apache.curator.framework.CuratorFramework client,
QueueAllocator<U,T> queueAllocator,
java.lang.String queuePath,
java.lang.String leaderPath,
QueueSharderPolicies policies)
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 policiespublic void start()
throws java.lang.Exception
java.lang.Exception - errorspublic void close()
close in interface java.lang.AutoCloseableclose in interface java.io.Closeablepublic T getQueue()
public int getShardQty()
public java.util.Collection<java.lang.String> getQueuePaths()
Copyright © 2011–2018 The Apache Software Foundation. All rights reserved.