在分布式應用中,雲訊息佇列 RocketMQ 版作為全鏈路中非同步解耦的關鍵服務,提供的訊息軌跡資料可有效將業務上下遊資訊串聯起來,協助您更好地排查異常資訊,定位問題。本文介紹訊息軌跡的使用情境、雲訊息佇列 RocketMQ 版定義的軌跡參數以及如何查看訊息軌跡。
使用情境
雲訊息佇列 RocketMQ 版將訊息收發流程中的關鍵資料定義為軌跡參數,並支援可視化查詢,通過查看軌跡資訊可快速擷取當前業務處理的狀態,協助您快速定位異常問題。
訊息軌跡的典型應用情境如下:
-
情境一:查看某條訊息是否發送成功或是否消費成功。
-
情境二:查看定時/延時訊息是否已定時結束。
-
情境三:查看事務訊息是否已提交或復原。
-
情境四:查看生產者、消費者身份資訊和機器資訊,進一步排查問題原因。
軌跡參數說明
雲訊息佇列 RocketMQ 版提供的軌跡參數如下:
|
屬性分類 |
軌跡參數 |
說明 |
|
生產者 |
生產者資訊 |
生產者發送訊息時使用的RocketMQ帳號或Access Key ID。 |
|
主機名稱 |
生產者用戶端所在機器的主機名稱。 |
|
|
發送時間 |
生產者發送訊息的起始時間。 |
|
|
到達Server時間 |
訊息到達並儲存到雲訊息佇列 RocketMQ 版服務端的時間。 |
|
|
發送結果 |
訊息發送的結果。取值如下:
|
|
|
訊息基礎資訊 |
訊息類型 |
|
|
訊息ID |
訊息的全域唯一標識,由雲訊息佇列 RocketMQ 版系統自動產生。 |
|
|
Topic |
訊息所屬的主題名稱。 |
|
|
訊息Keys |
MessageKey,訊息的業務標識,由訊息生產者設定,唯一標識某個商務邏輯。 |
|
|
訊息Tag |
訊息標籤,用於區分指定主題下的消費分類。 |
|
|
順序訊息 |
MessageGroup |
順序訊息中,訊息所屬的MessageGroup,由生產者設定。同一MessageGroup的訊息將遵循先進先出的循序關聯性進行處理。 |
|
事務訊息 |
Check回調時間 |
半事務訊息檢查事務狀態的回調時間。 |
|
提交時間 |
事務訊息被服務端提交給消費者消費的時間。 |
|
|
復原時間 |
事務訊息復原的時間。 |
|
|
定時訊息 |
預設定時時間 |
定時訊息的定時時間。 |
|
消費者 |
本次消費結果 |
訊息某次消費的消費結果。取值如下:
|
|
消費者資訊 |
消費者訂閱訊息時使用的RocketMQ帳號或AccessKey ID。 |
|
|
主機名稱 |
消費者用戶端所在機器的主機名稱。 |
|
|
是否順序投遞 |
消費者所屬的消費者分組是否開啟順序消費。 |
|
|
投遞時間 |
雲訊息佇列 RocketMQ 版服務端將訊息投遞給消費者的時間。 |
|
|
應答時間 |
雲訊息佇列 RocketMQ 版收到消費者返回的消費結果的時間。 |
|
|
invisibleDuration |
SimpleConsumer傳入的訊息不可見時間。更多資訊,請參見SimpleConsumer消費重試策略。 |
|
|
修改不可見時間 |
SimpleConsumer調用ChangeInvisibleDuration介面的時間。 |
|
|
進死信時間 |
訊息消費失敗被投遞至無效信件佇列的時間。 |
使用限制
RocketMQ 4.x/3.x版本的SDK用戶端預設不開啟訊息軌跡功能,您需要在訊息收發代碼中開啟訊息軌跡功能,才能在控制台查詢到訊息的軌跡資訊。具體配置如下:
-
生產者
producer.setAccessChannel(AccessChannel.CLOUD); -
消費者
consumer.setAccessChannel(AccessChannel.CLOUD);
計費說明
-
訂用帳戶和隨用隨付執行個體可免費使用訊息軌跡功能且預設支援訊息軌跡。
-
Serverless執行個體可選擇手動開啟或關閉訊息軌跡功能,具體操作,請參見開啟/關閉Serverless執行個體的訊息軌跡功能。
若開啟訊息軌跡,則Serverless執行個體按照實際產生的訊息軌跡條數計算訊息軌跡費用,具體計費規則,請參見訊息軌跡費用。
訊息軌跡儲存時間長度
-
訂用帳戶和隨用隨付執行個體的訊息軌跡儲存時間為3天。
-
Serverless執行個體的訊息軌跡儲存時間為14天。
訊息軌跡查詢方式
雲訊息佇列 RocketMQ 版支援以下查詢方式:
-
按Message ID查詢:該方式屬於精確查詢,速度快、精確匹配,推薦使用。
-
按Message Key查詢:該方式屬於模糊查詢,最多查詢1000條軌跡。僅適用於您沒有記錄Message ID但是設定了Message Key,同時Message Key具有區分度的情況。
-
按Topic查詢:該方式屬於範圍查詢,適用於沒有上述Message ID和Message Key,而且訊息量比較小的情境。因為時間範圍內訊息很多,且不具備區分度,所以不推薦使用。
開啟/關閉Serverless執行個體的訊息軌跡功能
-
關閉訊息軌跡功能,Serverless執行個體的訊息軌跡資料將不支援儲存和查詢,且控制台不顯示訊息軌跡的查詢入口。
-
開啟訊息軌跡功能,Serverless執行個體將產生訊息軌跡費用,具體計費項目,請參見訊息軌跡費用。
登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列單擊執行個體列表。
在頂部功能表列選擇地區,如華東1(杭州),然後在執行個體列表中,單擊目標執行個體名稱。
-
在实例详情頁面單擊基本信息頁簽,在消息轨迹參數後單擊开启或关闭。
-
在彈出的對話方塊中單擊确定。
查詢訊息軌跡
登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列單擊執行個體列表。
在頂部功能表列選擇地區,如華東1(杭州),然後在執行個體列表中,單擊目標執行個體名稱。
-
在左側導覽列單擊訊息軌跡,然後在訊息軌跡頁面選擇任一查詢方式並輸入相應的條件,最後單擊查詢。
查詢結果以表格形式展示,包含 Message ID、Topic、Tag、Message Key、建立時間等列。在操作列單擊訊息軌跡可查看對應訊息的軌跡詳情。
-
在查詢的列表中,單擊目標訊息操作列的消息轨迹。在彈出的面板中,可以查詢訊息的詳細資料。
訊息軌跡面板展示訊息從生產到消費的完整鏈路,分為三個地區:生產者地區顯示訊息來源、生產者資訊、主機名稱、發送時間、到達Server時間及發送結果;MQ Server地區顯示訊息類型、訊息ID、Topic、訊息Keys和Tag;消費者地區顯示Group ID、消費統計(全部數量與消費失敗數量)及各消費組的消費狀態。
-
若訊息成功消費,單擊消費者卡片中的Group ID,可以查詢訊息消費的詳細資料。單擊產生圖片,可以產生當前訊息的軌跡詳情圖片。
訊息軌跡查詢結果由三個面板組成:生產者面板顯示發送時間、到達Server時間和發送結果;MQ Server面板顯示訊息類型、訊息ID、Topic和Tag;消費者組面板(如test_group1)展開後顯示投遞次數、投遞結果、順序投遞狀態、投遞時間和應答時間。
相關文檔
訊息軌跡的相關操作也可以通過調用API完成: