赞
踩
一个Topic中的Queue只能有Consumer Group中的一个Consumer进行消费,那么他们之间的配对关系如何确定的,即Queue要分配给那个Consumer进行消费?也就是算法策略,常见有4中策略,这些策略通过创建Consumer时的构造器传进去的。
该算法是根据avg=QueueCount / ConsumerCount 的计算结果进行分配的,如果能够整除,则按顺序将avg个Queue逐个分配,如果不能整除,则将多余出的Queue按照Consumer顺序逐个分配
环形平均算法是指,根据消费者的顺序,以此由Queue队列组成的环形图逐个分配
该算法会将Consumer的Hash值作为Node节点存放到Hash环上,然后Queue的Hash值也放到Hash环上,通过逆时针方向,距离Queue最近的那个Consumer就是该Queue要分配的Consumer
该算法会根据Queue的部署机房位置和Consumer的位置,过滤出当前相同机房的Queue,然后按照平均分配活环形平均策略对同机房的Queue进行分配,如果没有同机房的Queue,则会按照平均策略或者环形平均策略对所有的Queue进行分配
RocketMQ有一个原则,每条消息必须被成功消费一次,什么事消费成功呢?Consumer在消息消费完成后悔向其消费进度记录器提交消费消息的offset,offset被成功记录到记录器中,那么这条消息就被成功消费了
什么事消费进度记录器
广播模式:Consumer本身就是消费进度记录器
集群模式:Broker是消费进度记录器
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。