雲訊息佇列 RocketMQ 版將訊息發送、訊息儲存、訊息消費這幾個關鍵節點的資料定義為軌跡參數,例如訊息發送結果、發送耗時、訊息到達服務端的時間、訊息的消費結果、消費耗時、用戶端資訊等,並支援可視化查詢。當訊息收髮結果不符合預期或您需要對特定訊息進行追蹤時,您可通過查看訊息軌跡擷取指定訊息在各個環節的處理狀態。
訊息軌跡資料
雲訊息佇列 RocketMQ 版系統中,一條訊息的完整鏈路包含生產者、服務端、消費者三個角色,每個角色處理訊息的過程中都會在軌跡鏈路中增加相關的資訊,將這些資訊匯聚即可擷取任意訊息當前的狀態。

使用說明
所有類型的訊息正常發送後,即可根據訊息的屬性在雲訊息佇列 RocketMQ 版控制台上查詢到訊息的發送軌跡,但查詢軌跡需要注意以下幾點。
支援查詢的時間範圍
雲訊息佇列 RocketMQ 版支援查詢1天內的訊息軌跡。例如,目前時間是2023年11月30日15:09:48,那麼能查詢到的訊息軌跡最早的時間點為2023年11月29日15:09:48。
消費狀態對查詢結果的影響
訊息類型 | 查詢說明 |
沒消費前顯示尚未消費。消費後會展示投遞和消費資訊。 | |
沒消費前顯示尚未消費。消費後會展示投遞和消費資訊。 | |
如果當前系統時間沒有到達指定消費的時間,軌跡可以查詢到,但是訊息查詢不到。 | |
事務未提交之前,軌跡可以查詢到,但是訊息查詢不到。 |
各語言SDK支援訊息軌跡的版本
協議 | 語言 | 支援訊息軌跡的版本 | 版本說明 |
TCP協議 | Java | 1.2.7.Final及以上版本 | |
C/C++ | 1.1.2及以上版本 | ||
.NET | 1.1.2及以上版本 | ||
HTTP協議 | Node.js | 1.0.2及以上版本 | |
其他多語言 | 1.0.1及以上版本 |
增強版訊息軌跡使用條件
增強版訊息軌跡功能指的是若您使用的執行個體及用戶端SDK版本符合以下條件,您可在控制台查看更多的軌跡資料,包括訊息消費環節的軌跡資料、定時和延時訊息及事務訊息的相關軌跡資料等,具體的軌跡參數說明,請參見訊息軌跡參數說明。
TCP協議Java SDK:
SDK版本:升級至2.x.x.Final版本。
執行個體所屬地區:華東1(杭州)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華南1(深圳)、西南1(成都)、德國(法蘭克福)和印尼(雅加達)。
TCP協議C++ SDK:
SDK版本:升級至3.x.x版本。
執行個體所屬地區:所有地區均支援。
使用情境
在生產環境的訊息收發不符合預期時,可以通過Message ID、Message Key或Topic的時間範圍查詢相關的訊息軌跡,找到訊息的實際收髮狀態,協助您快速診斷訊息問題。

使用樣本
假設您根據業務日誌裡的資訊來診斷某條訊息為何一直沒有收到,則可以參照以下步驟,利用訊息軌跡來排查問題。
收集疑似有問題的訊息資訊,包括Message ID、Message Key、Topic以及大概的發送時間。
進入雲訊息佇列 RocketMQ 版控制台,根據已有的資訊建立查詢任務,查詢相關的訊息的軌跡。
查看結果並分析判斷原因。
如果軌跡顯示尚未消費,則可以前往Group 管理頁面查看消費者狀態,確認訊息是否因堆積而導致尚未消費。具體步驟,請參見查看消費者狀態。
如果發現已經消費,請根據消費端的資訊,找到對應的用戶端機器和時間,登入用戶端機器查看相關日誌。
操作入口
登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列單擊執行個體列表。
在頂部功能表列選擇地區,如華東1(杭州),然後在執行個體列表中,單擊目標執行個體名稱。
在左側導覽列單擊消息轨迹,然後在頁面左上方單擊创建查询任务。
在彈出的创建消息轨迹查询任务面板中,按需選取查詢條件並按提示輸入資訊,單擊確定完成建立。
重要查詢時,儘可能精確地設定時間範圍,以便縮小查詢範圍,提高速度。
訊息軌跡查詢功能支援三種查詢方式,具體說明如下:
按 Message ID 查询:該方式屬於精確查詢、速度快、精確匹配,推薦使用。
按 Message Key 查询:該方式屬於模糊查詢,最多查詢1000條軌跡。僅適用於您沒有記錄Message ID但是設定了Message Key,同時Message Key具有區分度的情況。
按 Topic 查询:該方式屬於範圍查詢,適用於沒有上述Message ID和Message Key,而且訊息量比較小的情境。因為時間範圍內訊息很多,且不具備區分度,所以不推薦使用。
您建立查詢任務後,即可在消息轨迹頁面查看到剛建立的查詢任務,若状态顯示查詢中,說明暫不能查看訊息軌跡。您需要在工作清單的右上方,單擊
按鈕,直到狀態切換至查询完成。
訊息軌跡參數說明
以下參數僅當您的執行個體和用戶端SDK版本符合增強版訊息軌跡功能的條件時,才能在控制台查看到。具體條件,請參見本文增強版訊息軌跡使用條件。
生产者:AccessKey。
MQ Server:到達Server、預設DeliverAt、實際AvailableAt、提交/復原時間。
消费者:到达消费端、等待处理耗时。
表 1. 訊息軌跡參數說明
參數歸屬 | 參數名稱 | 說明 |
基础信息 | Message ID | 訊息的全域唯一標識,由雲訊息佇列 RocketMQ 版系統自動產生。 |
Topic | 訊息所屬的Topic名稱。 | |
消息 Key | Message Key,訊息的業務標識,由訊息生產者設定,唯一標識某個商務邏輯。 | |
消息 Tag | 訊息標籤,用於區分某Topic下的訊息分類。 | |
生产者 | AccessKey | 您的阿里雲帳號或RAM使用者的AccessKey ID,用於標識使用者。當您通過SDK或API調用雲訊息佇列 RocketMQ 版資源時,需要使用AccessKey ID進行身分識別驗證。 |
客户端 IP | 訊息生產者的用戶端IP地址。 | |
訊息生產時間 | 訊息從生產者發送時的用戶端時間戳記。 | |
发送 RT | 訊息發送的毫秒級耗時。 | |
发送状态 | 請參見訊息狀態說明中的发送状态。 | |
MQ Server | 消息类型 | 說明 發送的訊息為定時訊息或延時訊息時,消息类型都顯示為定时消息。 |
到達Server | 訊息到達雲訊息佇列 RocketMQ 版服務端的時間。 | |
預設DeliverAt | 定時訊息的預計投遞時間。 | |
實際AvailableAt | 訊息可被投遞到消費端的時間。 | |
提交/復原時間 | 事務訊息提交或復原的時間。 | |
消费者 | AccessKey | 您的阿里雲帳號或RAM使用者的AccessKey ID,用於標識使用者。當您通過SDK或API調用雲訊息佇列 RocketMQ 版資源時,需要使用AccessKey ID進行身分識別驗證。 |
到达消费端 | 訊息到達消費者用戶端的時間。 | |
等待处理耗时 | 訊息到達消費者用戶端到訊息開始消費時的耗時。 | |
本次投遞結果 | 某條訊息投遞給指定消費者可能要投遞多次才會消費成功,該參數表示其中某一次投遞的結果。更多資訊,請參見訊息狀態說明中的消费状态。 | |
用戶端 IP | 訊息消費者用戶端的IP地址。 | |
消息处理开始 | 訊息開始消費時的用戶端時間戳記。 | |
消息处理结束 | 訊息完成消費時的用戶端時間戳記。 | |
消息处理耗时 | 訊息消費開始到結束的耗時。 |
在訊息軌跡的工作清單頁,單擊某任務操作列的查询结果會顯示訊息的发送状态和消费状态;具體的訊息軌跡詳情中的生产者和消费者地區也會分別顯示訊息的發送和消費狀態。這些狀態的說明如下:
表 2. 訊息狀態說明
狀態類型 | 狀態參數 |
发送状态 | 發送成功 |
發送失敗 | |
訊息定時中 | |
事務未提交 | |
交易回復 | |
消费状态 | 全部成功 |
部分成功 | |
全部失敗 | |
尚未消費 | |
消費結果未返回 | |
消費成功 | |
消費失敗 |
訊息軌跡常見問題
為什麼查詢不到訊息軌跡?
檢查用戶端的SDK版本是否正確。具體支援的版本,請參見各語言SDK支援訊息軌跡的版本。
查詢的時間範圍是否正確。
雲訊息佇列 RocketMQ 版支援查詢1天內的訊息軌跡。例如,目前時間是2023年11月30日15:09:48,那麼能查詢到的訊息軌跡最早的時間點為2023年11月29日15:09:48。
由於訊息軌跡採用非同步鏈路,因此,不保證軌跡資料一定完整。當查詢條件正確時,仍會有小機率查詢不到結果,請以實際業務消費情況為準,您可以通過查看用戶端日誌擷取詳細狀態。具體資訊,請參見日誌配置。
相關文檔
除了控制台,雲訊息佇列 RocketMQ 版還支援通過API介面查詢訊息軌跡。