輕量訊息佇列(原 MNS)提供訊息軌跡查詢功能,您可以通過訊息軌跡查詢訊息的完整鏈路資訊,包括訊息的發送、訂閱匹配、推送、消費等環節的時間、結果、生產者和消費者身份等資訊,協助您快速排查訊息收發過程中的異常問題。
使用情境
輕量訊息佇列(原 MNS)的訊息軌跡功能可以協助您解決以下問題:
查看訊息是否發送成功:當您懷疑訊息沒有收到時,可以通過訊息軌跡確認訊息是否成功發送到隊列或主題,以及訊息是否被消費。
排查訊息重複消費問題:當您發現同一條訊息被多次消費時,可以通過訊息軌跡查看訊息的完整消費記錄,包括每次消費的時間、消費者身份和消費結果。
排查主題推送失敗問題:當主題的 HTTP 訂閱、郵件訂閱等推送失敗時,可以通過訊息軌跡查看推送的詳細狀態和失敗原因。
排查訊息延遲問題:當您發現訊息消費延遲過高時,可以通過訊息軌跡查看訊息在各個環節的時間,定位延遲發生的環節。
查看定時訊息的定時狀態:查看定時訊息是否已到達預設的定時時間。
查詢生產者和消費者的身份資訊:查看訊息發送方的 IP 位址、AccessKey,以及消費者的 IP 位址等資訊,協助您進一步排查問題。
軌跡參數說明
隊列訊息軌跡
隊列訊息軌跡包含發送資訊、訊息資訊和消費資訊三部分。
發送資訊
普通發送情境
參數 | 說明 |
訊息來源 | 訊息的來源類型為生產者,指由生產者直接發送到隊列 |
方法 | API 操作類型,例如:SendMessage、BatchSendMessage |
生產者 IP | 發送訊息的用戶端 IP 位址 |
AccessKey | 發送訊息的 AccessKey |
發送時間 | 訊息到達隊列的伺服器時間 |
結果 | 發送結果,顯示"成功"或具體的錯誤資訊 |
死信情境
當訊息從原隊列進入無效信件佇列時,會產生一條新的發送軌跡記錄。
參數 | 說明 |
訊息來源 | 常量:死信 |
原隊列 | 訊息原本所在的隊列名稱 |
原隊列訊息 ID | 訊息在原隊列中的 Message ID |
發送時間 | 訊息進入無效信件佇列的時間 |
結果 | 發送結果,顯示"成功"或具體的錯誤資訊 |
訂閱推送情境
當主題通過隊列訂閱將訊息推送到隊列時,會產生一條發送軌跡記錄。
參數 | 說明 |
訊息來源 | 常量:主題的隊列訂閱 |
主題 | 推送訊息的主題名稱 |
訂閱 | 推送訊息的訂閱名稱 |
原訊息 ID | 訊息在主題中的 Message ID |
發送時間 | 訊息推送到隊列的時間 |
結果 | 發送結果,顯示"成功"或具體的錯誤資訊 |
其他雲產品情境
當事件通知通過隊列訂閱將訊息推送到隊列時,會產生一條發送軌跡記錄。
參數 | 說明 |
訊息來源 | 常量:其他雲產品 |
方法 | 常量:Notify |
發送時間 | 訊息推送到隊列的時間 |
結果 | 發送結果,顯示"成功"或具體的錯誤資訊 |
訊息資訊
普通訊息
參數 | 說明 |
訊息類型 | 常量:普通訊息 |
訊息 ID | 訊息的唯一識別碼 |
隊列 | 訊息所在的隊列名稱 |
儲存時間長度 | 訊息在隊列中的最長儲存時間,對應隊列的 MessageRetentionPeriod 屬性 |
可見度逾時時間長度 | 訊息被消費後的預設不可見時間長度,對應隊列的 VisibilityTimeout 屬性 |
定時訊息
參數 | 說明 |
訊息類型 | 常量:定時訊息 |
訊息 ID | 訊息的唯一識別碼 |
隊列 | 訊息所在的隊列名稱 |
儲存時間長度 | 訊息在隊列中的最長儲存時間,對應隊列的 MessageRetentionPeriod 屬性 |
可見度逾時時間長度 | 訊息被消費後的預設不可見時間長度,對應隊列的 VisibilityTimeout 屬性 |
定時時間長度 | 訊息的定時時間長度(秒) |
預設定時結束時間 | 訊息預設的可消費時間 |
消費資訊
隊列的訊息消費軌跡按 ReceiptHandle 分組展示,每個 ReceiptHandle 代表訊息的一次消費會話。
參數 | 說明 |
本次結果 | 本次消費會話的最終結果,包括但不限於:
|
消費者 IP | 接收或操作訊息的用戶端 IP 位址 |
AccessKey | 操作訊息的 AccessKey |
ReceiptHandle | 訊息控制代碼,用於刪除訊息或修改訊息可見度 |
操作時間 | 執行操作的伺服器時間 |
操作 | 執行的 API 操作,包括:
|
一條訊息可能產生多個 ReceiptHandle,每次調用 ReceiveMessage 或 BatchReceiveMessage 都會產生新的 ReceiptHandle。
如果消費者在訊息可見度逾時前刪除了訊息,則本次消費會話結果為"成功"。
如果消費者擷取訊息後未刪除,訊息在可見度逾時後會重新可消費,產生新的 ReceiptHandle。
如果使用已失效的 ReceiptHandle 操作訊息,會返回 404 錯誤。
主題訊息軌跡
主題訊息軌跡包含發送資訊、訂閱匹配資訊和推送資訊三部分。
發送資訊
普通發送情境
參數 | 說明 |
訊息來源 | 訊息的來源類型為生產者,指由生產者直接發送到主題 |
方法 | API 操作類型,PublishMessage |
生產者 IP | 發送訊息的用戶端 IP 位址 |
AccessKey | 發送訊息的 AccessKey |
發送時間 | 訊息到達主題的伺服器時間 |
結果 | 發送結果,顯示"成功"或具體的錯誤資訊 |
其他雲產品情境
當事件通知通過隊列訂閱將訊息推送到隊列時,會產生一條發送軌跡記錄。
參數 | 說明 |
訊息來源 | 常量:其他雲產品 |
方法 | API 操作類型,PublishMessage |
發送時間 | 訊息推送到主題的時間 |
結果 | 發送結果,顯示"成功"或具體的錯誤資訊 |
訂閱匹配資訊
主題收到訊息後,會根據訂閱的過濾條件(FilterTag)匹配合格訂閱,並向這些訂閱推送訊息。
參數 | 說明 |
訊息 ID | 訊息的唯一識別碼 |
Tag | 訊息的標籤,用於訂閱過濾 |
訂閱名 | 匹配到的訂閱名稱 |
訂閱類型 | 訂閱的終端節點類型,包括:
|
推送資訊
隊列訂閱
參數 | 說明 |
訊息 ID | 推送到隊列後的新訊息 ID |
消費結果 | 推送是否成功,顯示"成功"或具體的錯誤資訊 |
推送時間 | 開始推送的時間 |
處理耗時 | 推送耗時,單位為毫秒 |
其他訂閱(HTTP/郵箱/阿里簡訊)
參數 | 說明 |
推送結果 | 推送的狀態代碼和結果,包括:
|
推送時間 | 開始推送的時間 |
處理耗時 | 推送耗時,單位為毫秒 |
使用限制
訊息軌跡開關:訊息軌跡預設處於關閉狀態,可在訊息軌跡頁面手動開啟功能。
查詢時間範圍:開始時間的取值範圍是近 15 天,每次查詢的時間跨度不超過 3 天。
計費說明
請參見訊息軌跡費用。
訊息軌跡儲存時間長度
訊息軌跡資料儲存 15 天,超過 15 天的軌跡資料將被自動刪除,無法查詢。
查詢方式
輕量訊息佇列(原 MNS)提供 5 種訊息軌跡查詢方式,您可以根據實際情境選擇合適的查詢方式。
查詢方式 | 適用情境 | 返回結果 |
按訊息 ID 查詢 | 已知訊息 ID,需要查詢該訊息的完整軌跡 | 返回唯一的訊息軌跡 |
按 RequestID 查詢 | 已知 API 請求的 RequestID,需要查詢該請求涉及的訊息 | 返回該請求涉及的訊息軌跡 |
按隊列名查詢 | 需要查看某個隊列在一段時間內的所有訊息軌跡 | 返回該隊列在指定時間範圍內的訊息軌跡 |
按主題名查詢 | 需要查看某個主題在一段時間內的所有訊息軌跡 | 返回該主題在指定時間範圍內的訊息軌跡 |
按訂閱名查詢 | 需要查看某個訂閱在一段時間內推送的所有訊息軌跡 | 返回該訂閱在指定時間範圍內推送的訊息軌跡 |
如果已知訊息 ID,優先使用按訊息 ID 查詢,可以快速擷取精確結果。
如果需要排查一段時間內的訊息問題,可以使用按隊列名、主題名或訂閱名查詢。
按 RequestID 查詢適用於排查 API 呼叫問題,例如批量發送或批量消費的情境。
操作步驟
查詢訊息軌跡
在左側導覽列,選擇。
在頂部功能表列,選擇地區。
點擊消息轨迹未开启按鈕,開啟訊息軌跡功能。
在訊息軌跡頁面,根據需要選取查詢方式並輸入查詢條件。
按訊息 ID 查詢:輸入訊息 ID,單擊查詢。
按 RequestID 查詢:輸入 API 請求的 RequestID,單擊查詢。
按隊列名查詢:選擇隊列名稱,選擇開始時間(最近 15 天內,時間跨度不超過 3 天),單擊查詢。
按主題名查詢:選擇主題名稱,選擇開始時間(最近 15 天內,時間跨度不超過 3 天),單擊查詢。
按訂閱名查詢:選擇主題和訂閱名稱,選擇開始時間(最近 15 天內,時間跨度不超過 3 天),單擊查詢。
在查詢結果清單中,找到目標訊息,單擊操作列的詳情。
在訊息軌跡詳情頁面,查看訊息的完整軌跡資訊。
隊列訊息軌跡詳情:包含發送資訊、訊息資訊和消費資訊。
發送資訊:查看訊息的來源、發送方法、生產者 IP、AccessKey、到達時間和發送結果。
訊息資訊:查看訊息 ID、隊列名稱、儲存時間長度、可見度逾時時間長度等。如果是定時訊息,還會顯示定時時間長度和預設定時結束時間。
消費資訊:按 ReceiptHandle 分組展示訊息的消費記錄。展開某個 ReceiptHandle,可以查看該消費會話的所有操作,包括接收、刪除、修改可見度等操作的時間、消費者 IP 和操作結果。
主題訊息軌跡詳情:包含發送資訊、訂閱匹配資訊和推送資訊。
發送資訊:查看訊息的發送方法、生產者 IP、AccessKey、到達時間和發送結果。
訂閱匹配資訊:查看訊息 ID、Tag、匹配到的訂閱名稱和訂閱類型。
推送資訊:查看每個訂閱的推送結果、推送時間等。對於隊列訂閱,會顯示推送後的新訊息 ID;對於 HTTP、郵件、簡訊訂閱,會顯示推送狀態代碼和推送耗時。
(可選)如果需要查看隊列訂閱推送到隊列後的訊息軌跡,可以單擊推送資訊中的Message ID連結,跳轉到該隊列訊息的軌跡詳情。
常見問題
Q:為什麼查詢不到訊息軌跡?
A:可能的原因包括:
訊息軌跡資料超過 15 天已被刪除。
查詢的時間範圍不準確,建議適當擴大查詢時間範圍。
訊息 ID 或 RequestID 輸入錯誤,請檢查後重新查詢。
Q:訊息軌跡中顯示"未響應"是什麼意思?
A:"未響應"表示消費者接收訊息後,在可見度逾時時間內既未刪除訊息,也未修改可見度逾時時間,導致訊息可見度逾時後重新可消費。建議檢查消費者程式是否正常處理訊息並刪除訊息。
Q:為什麼一條訊息有多個 ReceiptHandle?
A:每次調用 ReceiveMessage 或 BatchReceiveMessage API 接收訊息時,都會產生一個新的 ReceiptHandle。如果消費者接收訊息後未刪除,訊息可見度逾時後會重新可消費,此時再次接收會產生新的 ReceiptHandle。
Q:訊息軌跡會影響訊息收發的效能嗎?
A:訊息軌跡的記錄是非同步進行的,不會影響訊息收發的效能和可靠性。即使軌跡記錄失敗,也不會影響正常的訊息收發。