详细简述RocketMQ 队列Queue分配算法 ?

RocketMQ的队列分配算法包括以下四种:

  1. 平均分配策略:计算公式为avg=QueueCount(队列数量)/ConsumerCount(消费者数量)。当能整除时,按照avg个Queue分配给一个Consumer,如果不能整除,将多余的Queue按照Consumer顺序逐个分配。
  2. 环形平均策略:根据消费者的顺序,依次在由queue队列组成的环形图中逐个分配。该方法不需要提前计算,且能保证负载均衡。
  3. 一致性Hash策略:根据某种Hash算法,将queue和consumer都进行Hash,然后根据Hash值分配。能保证相同Consumer总是被分配到同一个queue。
  4. 同机房策略:将同一个机房的queue分配给同一个Consumer。

这些策略都可以在创建Consumer时的构造器中传入,从而影响队列的分配方式。

发表评论

后才能评论