7.12. 阻塞双端队列(Blocking Deque)

基于Redis的Redisson分布式无界阻塞双端队列(Blocking Deque)结构的RBlockingDeque Java对象实现了java.util.concurrent.BlockingDeque接口。尽管RBlockingDeque对象无初始大小(边界)限制,但对象的最大容量受Redis限制,最大元素数量是4 294 967 295个。

  1. RBlockingDeque<Integer> deque = redisson.getBlockingDeque("anyDeque");
  2. deque.putFirst(1);
  3. deque.putLast(2);
  4. Integer firstValue = queue.takeFirst();
  5. Integer lastValue = queue.takeLast();
  6. Integer firstValue = queue.pollFirst(10, TimeUnit.MINUTES);
  7. Integer lastValue = queue.pollLast(3, TimeUnit.MINUTES);

poll, pollFromAny, pollLastAndOfferFirstTotake方法内部采用话题订阅发布实现,在Redis节点故障转移(主从切换)或断线重连以后,内置的相关话题监听器将自动完成话题的重新订阅。