1. 程式人生 > 其它 >RocketMQ學習:基本概念介紹

RocketMQ學習:基本概念介紹

訊息

訊息是指,訊息系統所傳輸資訊的物理載體,生產和消費資料的最小單位,每條訊息必須屬於一個主題

主題Topic

Topic表示一類訊息的集合,每個主題包含若干條訊息,每條訊息只能屬於一個主題,是RocketMQ進行訊息訂閱的基本單位

一個生產者可以同時傳送多種Topic的訊息,而一個消費者只對某種特定的Topic感興趣,即只可以訂閱和消費一種Topic的訊息

標籤

為訊息設定的標籤,用於同一主題下區分不同型別的訊息。來自同一業務單元的訊息,可以根據不同業務目的在同一主題下設定不同的標籤。消費者可以根據Tag實現對不同子主題的不同消費邏輯,實現更好的擴充套件性

佇列Queue

儲存訊息的物理實體。一個Topic中可以包含多個Queue,每個Queue中存放的就是該Topic的訊息。一個Topic的Queue也被稱為一個Topic中訊息的分割槽。一個Topic的Queue中的訊息只能讓消費者組中一個消費者消費

訊息標識

RocketMQ中每個訊息擁有唯一的MessageID,且可以攜帶具有業務標識的Key,方便對訊息查詢。

  • msgID:由生產者端生成,其規則為:producerIP+程序Pid+MessageClientIDSetter類的ClassLoader的HashCode+當前時間+AutomaticInteger自增
  • offsetMsgID:由Broker端生成,其生成規則為:brokerIP+物理分割槽的offset
  • key:由使用者指定的業務相關的唯一標識

生產者與生產者組

訊息生產者,負責生產訊息。Producer通過MQ的負載均衡模組選擇相應的Broker叢集佇列進行訊息投遞,投遞的過程支援快速失敗並且低延遲
RocketMQ中的訊息生產者都是以生產者組的形式出現的。生產者組是同一類生產者的集合,這類生產者傳送相同Topic型別的訊息。一個生產者組可以同時傳送多個主題的訊息。

消費者與消費者組

訊息消費者,負責消費訊息。一個訊息消費者會從 Broker伺服器中獲取到訊息,並對訊息進行相關業務處理。

Rocketmq中的訊息消費者都是以消費者組(Consumer group)的形式出現的。消費者組是同一類消費者的集合,這類 Consumer消費的是同一個 Topic型別的訊息。消費者組使得在訊息消費方面,實現負載均衡(指的是將一個Topic中的Queue平均分給同一個Consumer Group的不同Consumer)和容錯(一個Consumer掛了,該Consumer Group中的其他Consumer可以接著消費原來的Consumer消費的Queue)的目標變得非常容易

消費者組中的Consumer的數量應該小於等於訂閱Topic的Queue的數量。如果超出Queue的數量,則多出的Consumer不能消費訊息

不過,一個Topic型別的訊息可以被多個消費者組同時消費

注意:
一個消費者組只能消費一個Topic的訊息,不能同時消費多個Topic的訊息
一個消費者組中的消費者必須訂閱完全相同的Topic