Hazelcast distributed queue is an implementation of java.util.concurrent.BlockingQueue
. Being distributed, it enables all cluster members to interact with it. Meaning that, you can add an item in one machine and remove it from another one.
import com.hazelcast.core.Hazelcast;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
BlockingQueue<MyTask> queue = hazelcastInstance.getQueue( "tasks" );
queue.put( new MyTask() );
MyTask task = queue.take();
boolean offered = queue.offer( new MyTask(), 10, TimeUnit.SECONDS );
task = queue.poll( 5, TimeUnit.SECONDS );
if ( task != null ) {
//process task
}
FIFO ordering will apply to all queue operations cluster wide. User objects (such as MyTask
in the example above), that are (en/de)queued have to be Serializable
.
There is no batching while iterating over Queue. All items will be copied to local and iteration will occur locally.