RocketMQ的消費模式有2種
1 public enum MessageModel { 2 BROADCASTING("BROADCASTING"), 3 CLUSTERING("CLUSTERING"); 4
5 private String modeCN; 6
7 private MessageModel(String modeCN) { 8 this.modeCN = modeCN; 9 } 10
11 public String getModeCN() { 12 return this.modeCN; 13 } 14 }
查看一下源碼,在默認情況下,就是集群消費(CLUSTERING)。另一種消費模式,是廣播消費(BROADCASTING)。
其實,對於RocketMQ而言,通過ConsumeGroup的機制,實現了天然的消息負載均衡!通俗點來說,RocketMQ中的消息通過ConsumeGroup實現了將消息分發到C1/C2/C3/……的機制,這意味着我們將非常方便的通過加機器來實現水平擴展!
至於消息分發到C1/C2/C3,其實也是可以設置策略的:
默認的分配算法是AllocateMessageQueueAveragely
還有另外一種平均的算法是AllocateMessageQueueAveragelyByCircle,也是平均分攤每一條queue,只是以環狀輪流分queue的形式,如下圖:
廣播消費,類似於ActiveMQ中的發布訂閱模式,消息會發給Consume Group中的每一個消費者進行消費。 由於廣播模式下要求一條消息需要投遞到一個消費組下面所有的消費者實例,所以也就沒有消息被分攤消費的說法。

RocketMQ-廣播消費模式設置:
