淺談RocketMQ的Topic、tag、group的使用

1、RocketMQ是什麼

RocketMQ是一款低延遲、高併發、高可用、高可靠的分佈式消息中間件,面向互聯網分佈式應用場景提供微服務異步解耦、流式數據處理、事件驅動處理等核心能力。

2、Topic

主題 Tpoic ,是MQ中消息傳輸和存儲的頂層容器,用於標識同一類業務邏輯的消息。

主要作用:定義數據的分類隔離(建議將不同業務類型的數據拆分到不同的主題管理,通過主題實現存儲的隔離性和訂閱隔離性)、定義數據的身份和權限(消息本身是匿名無身份的,同一分類的消息使用相同的主題來做身份識別和權限管理)

內部屬性:主題名稱、隊列列表、消息類型

3、Tag

過濾標籤Tag,消費者可通過Tag對消息進行過濾,僅接收指定標籤的消息。取值由生產者客戶端定義。一條消息僅支持設置一個標籤。

4、Group

一類Producer或Consumer,這類Producer或Consumer通常生產或者消費同一類消息,且消息發佈或訂閱的邏輯一致。

創建完實例和Topic之後,需要爲消息的消費者創建客戶端ID,即GroupId。前提條件是創建實例。

背景信息:消費者必須有對應的GroupId,生產者不強制要求。GroupId必須在同一個實例中唯一。

GroupId和Topic的比例是N:N,即一個消費者可以訂閱多個Topic。同一個Topic也可以被多個消費者訂閱;一個生產者可以向多個Topic發送消息,同一個Topic也可以接受來自多個生產者的信息。

5、訂閱關係一致

訂閱關係:一個消費者組訂閱一個Topic的某一個Tag,這種記錄被稱爲訂閱關係。

訂閱關係一致:同一個消費者組下所有消費者實例所訂閱的Topic、Tag必須完全一致。如果訂閱關係(消費者組名-Topic-Tag)不一致,會導致消費消息紊亂,甚至消息丟失。

例如:同一個GroupID下三個Consumer實例,分別訂閱了TopicA。且訂閱的Tag都是Tag1.符合訂閱關係一致原則。

只要訂閱的Topic和Tag相同,且順序一致,即符合訂閱關係一致

參考:https://rocketmq.apache.org/zh/docs/4.x/bestPractice/07subscribe/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章