7.14. 阻塞公平双端队列(Blocking Fair Deque)

基于Redis的Redisson分布式无界阻塞公平双端队列(Blocking Fair Deque)结构的RBlockingFairDeque Java对象在实现Redisson分布式无界阻塞双端队列(Blocking Deque)结构RBlockingDeque接口的基础上,解决了多个队列消息的处理者在复杂的网络环境下,网络延时的影响使“较远”的客户端最终收到消息数量低于“较近”的客户端的问题。从而解决了这种现象引发的个别处理节点过载的情况。

以分布式无界阻塞双端队列为基础,采用公平获取消息的机制,不仅保证了polltakepollFirsttakeFirstpollLasttakeLast方法获取消息的先入顺序,还能让队列里的消息被均匀的发布到处在复杂分布式环境中的各个处理节点里。

  1. RBlockingFairDeque deque = redisson.getBlockingFairDeque("myDeque");
  2. deque.offer(new SomeObject());
  3. SomeObject firstElement = queue.peekFirst();
  4. SomeObject firstElement = queue.pollFirst();
  5. SomeObject firstElement = queue.pollFirst(10, TimeUnit.MINUTES);
  6. SomeObject firstElement = queue.takeFirst();
  7. SomeObject lastElement = queue.peekLast();
  8. SomeObject lastElement = queue.pollLast();
  9. SomeObject lastElement = queue.pollLast(10, TimeUnit.MINUTES);
  10. SomeObject lastElement = queue.takeLast();

该功能仅限于Redisson PRO版本。