Topic是雲訊息佇列 RocketMQ 版對訊息的一級歸類。雲訊息佇列 RocketMQ 版支援發布和訂閱模型,通過Topic完成訊息的發布和訂閱。訊息生產者將訊息發送到Topic中,而訊息消費者則通過訂閱該Topic來消費訊息。本文介紹如何在雲訊息佇列 RocketMQ 版控制台上建立、刪除、更新和查詢Topic。
注意事項
-
Topic不能跨執行個體使用,例如在執行個體A中建立的Topic A不能在執行個體B中使用。
-
Topic類型和訊息類型必須一致不能混用。例如,您需要建立一個Topic用於收發普通訊息,則該Topic的訊息類型必須為普通訊息類型,不能選擇順序訊息、事務訊息等,否則會導致營運事件(如節點更換,執行個體遷移時定時訊息丟失)。
-
RocketMQ 5.x 版本中,Topic 的隊列數(Queue)由系統自動分配,不支援自訂修改,目前也無法通過控制台或 API 直接查看具體隊列數值。
-
雲訊息佇列 RocketMQ 版不支援直接建立全域順序 Topic,也不提供特殊申請通道。如需實現全域順序效果,建議建立分區順序 Topic,並在發送訊息時為所有訊息設定相同的 Sharding Key(如固定值),使訊息均路由至同一分區。
-
雲訊息佇列 RocketMQ 5.x 版出於資源管控和穩定性考慮,不支援自動建立 Topic(包括死信 Topic)。如需使用死信 Topic,需通過控制台或調用 API 顯式手動建立,這與開源 RocketMQ 版本的行為有所不同。
計費說明
雲訊息佇列 RocketMQ 版不同的計費模式,Topic的計費方式也不相同。
-
訂用帳戶、隨用隨付執行個體
Topic數量超過執行個體免費配額的部分,會產生Topic費用。若未超出免費配額,則不產生費用。具體的計費規則,請參見Topic費用。
-
Serverless執行個體
按照Topic數量進行計費。具體的計費規則,請參見Serverless執行個體Topic費用。
建立Topic
登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列單擊執行個體列表。
在頂部功能表列選擇地區,如華東1(杭州),然後在執行個體列表中,單擊目標執行個體名稱。
-
在左側導覽列,單擊Topic 管理。
-
在Topic 管理頁面,單擊創建 Topic。
-
在创建 Topic面板中,輸入Topic的名称和描述,選擇該Topic的訊息類型,然後單擊確定。
訊息類型可選擇普通訊息、順序訊息、定時/延時訊息或事務訊息。名稱長度為 1~60 個字元,只能包含大小寫英文、數字、虛線(-)和底線(_)。
查看Topic列表
登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列單擊執行個體列表。
在頂部功能表列選擇地區,如華東1(杭州),然後在執行個體列表中,單擊目標執行個體名稱。
-
在左側導覽列,單擊Topic 管理。
-
在Topic 管理頁面,可以查看當前執行個體的所有Topic。
查詢Topic詳情
-
在Topic 管理頁面,找到目標Topic,在其操作列單擊详情。
-
在Topic 详情頁面,可以查詢Topic的詳細資料。
編輯Topic
-
在Topic 管理頁面,找到目標Topic,在其操作列單擊详情。
-
在Topic 详情頁面單擊基本信息頁簽,然後在基础信息地區單擊编辑。
-
在更新 Topic面板中輸入修改後的Topic描述,並單擊确定完成修改。
刪除Topic
-
Topic刪除後,相關的生產者、消費者將會立即停止服務,Topic中繼資料和Topic的訊息資料也會被同時刪除且不可恢複,請您謹慎執行該操作。
-
若需要再次建立同名Topic,需要等待5分鐘。
-
在Topic 管理頁面,找到目標Topic,在其操作列單擊详情。
-
在Topic 详情頁面單擊基本信息頁簽,然後在基础信息地區單擊刪除 Topic。
-
在提示對話方塊,單擊確認。
快速體驗
雲訊息佇列 RocketMQ 版支援在控制快速體驗普通訊息的發送。其他類型訊息的收發可通過SDK進行,具體操作,請參見SDK參考概述。
-
在Topic 管理頁面,找到訊息類型為普通訊息的目標Topic,在其操作列單擊详情。
-
在Topic 详情頁面,單擊快速體驗。
-
在快速體驗的訊息生產和消費面板,按需執行相應操作:
-
控制台:
輸入訊息內容、訊息 Key和訊息 Tag,然後單擊確定。
-
SDK:
根據不同的SDK,查看對應的程式碼範例,並根據說明完成訊息的發送與接收。
-
查看儀錶盤
儀錶盤主要展示Topic的生產相關指標以及生產者用戶端相關指標。儀錶盤指標詳情,請參見儀錶盤。
-
在Topic 管理頁面,找到目標Topic,在其操作列單擊详情。
-
在Topic 详情頁面,單擊仪表盘頁簽。
更多操作
Topic匯入和匯出,請參見Topic匯入/匯出。
常見問題
Q:使用阿里雲 CLI 建立 Topic 時報 InternalError 或提示 MessageType 缺失怎麼辦?
在使用阿里雲 CLI 建立 Topic 時,MessageType 參數為必填項且無預設值,不可省略。必須顯式指定訊息類型(如 NORMAL、FIFO、DELAY 等),否則會導致建立失敗或報 InternalError 錯誤。請檢查 CLI 命令中是否包含 --MessageType 參數,並確保指定了正確的訊息類型值。
Q:調用 OnsTopicStatus 介面查詢 Topic 時返回 BIZ_RESOURCE_NOT_EXISTS 報錯怎麼辦?
該報錯表示傳入的執行個體 ID 下不存在目標 Topic。請按以下步驟排查:
-
核對調用介面時使用的執行個體 ID 和 Topic 名稱是否正確。
-
確認目標 Topic 已在指定執行個體中建立並處於正常狀態。
-
注意 Topic 不能跨執行個體使用,請確保查詢所用的執行個體 ID 與建立 Topic 時使用的執行個體 ID 一致。
Q:如何查詢 RocketMQ Topic 被刪除的操作記錄及操作者?
可通過阿里雲Action Trail(ActionTrail)控制台查詢 Topic 刪除記錄:
-
登入Action Trail(ActionTrail)控制台。
-
在事件查詢頁面,搜尋事件名稱
OnsTopicDelete(通過 API 刪除)或ConsoleTopicDelete(通過控制台刪除),並篩選對應地區。 -
查看操作記錄及操作者帳號資訊。
Action Trail日誌最長保留 90 天,超出該期限的操作記錄無法查詢。
Q:同一 FIFO 主題在多重專案中存在生產者,導致訊息類型不匹配報錯怎麼辦?
該錯誤與多專案共存無關,根本原因是 Topic 配置的訊息類型為 FIFO(順序訊息),但用戶端發送時使用了普通訊息(NORMAL)的介面或屬性,導致訊息類型不一致。請按以下步驟排查:
-
檢查代碼中訊息的定義,確認使用了 FIFO 訊息專用的發送介面(而非普通訊息介面)。
-
確認訊息屬性符合 FIFO 要求,例如正確設定了訊息分組(MessageGroup)。
-
確保所有生產者代碼中訊息的發送方式與 Topic 配置的訊息類型(FIFO)保持一致。
相關文檔
Topic的相關操作也可以通過調用API完成: