業務消息設計:Topic與Tag
更新時間 2023-07-03 20:57:47
最近更新時間: 2023-07-03 20:57:47
分享文章
Topic與Tag釋義
1)Topic:消息主題,通過 Topic 對不同的業務消息進行分類。
2)Tag:消息標簽,用來進一步區分某個Topic下的消息分類,消息隊列 RocketMQ允許消費者按照Tag對消息進行過濾,確保消費者最終只消費到他關注的消息類型。
Topic與Tag都是業務上用來歸類的標識,區分在于Topic是一級分類,而Tag 可以說是二級分類。
適用場景
什么時候該用topic,什么時候該用tag,可以參考下面的一些考慮進行權衡
考慮消息類型:如普通消息、順序消息,事務消息、定時(延時)消息,不同消息類型是無法通過tag區分的,這種情況就需要我們創建不同的topic。
業務關聯性:如果是不同業務之間沒有直關聯的消息,建議按照Topic進行區分;而同一個業務只是子類型不一樣的消息可以用Tag進行區分。
消息優先級:不同的業務場景可能會導致消費端對于消息的優先級需求不同,有的緊急,有的相對來說對于延時的接收程度更大,不同優先級的消息用不同的Topic進行區分。
消息量級:如果量小但延時要求高的消息,跟超大量級(如萬億)的消息使用同一個Topic,則有可能排隊時間過長導致延時無法接受,所以不同量級的消息不要使用不同的tag,需要用不同的Topic。
總結起來就是,在消息分類實踐中,有創建多個Topic,以及在同一個Topic下創建多個Tag兩種常見做法。一般來說,不同的Topic之間的消息不產生直接業務上的關聯,而同一個topic下相互之間產生聯系的消息可以選擇用tag來區分,一般是相同業務下的不同板塊不同類型。