閱讀978 返回首頁    go 阿裏雲 go 技術社區[雲棲]


消息查詢__控製台使用指南_消息隊列 MQ-阿裏雲

MQ 控製台提供幾種消息查詢方式用於問題排查。

適用場景

MQ 提供了三種消息查詢的方式,分別是根據 Messag ID,Message Key 以及 Topic 查詢。三種方式的特點和對比如下。

查詢方式 查詢條件 查詢類別 說明
Message ID 查詢 Topic+Message ID 精確查詢 根據 Message ID 可以精確定位任意一條消息,獲取消息的屬性
Message Key 查詢 Topic+Message Key 模煳查詢 根據 Message Key 可以匹配到包含指定 Key 的最近 64 條消息,建議消息生產方為每條消息設置盡可能唯一的 Key,以確保相同的 Key 的消息不會超過 64 條,否則消息會漏查
Topic 查詢 Topic+時間段 範圍查詢 根據 Topic 和時間範圍,批量獲取符合條件的所有消息,查詢量大,不易匹配

建議查詢過程:

msgquery

根據 Message ID 查詢

根據 Message ID 查詢消息屬於精確查詢,用戶輸入 Message ID 信息即可精確查詢到任意一條消息。因此,為了盡可能精確地查詢,建議發送方調用 Producer 發送消息時,在發送消息成功後將 Message ID 信息打印到日誌中,方便問題排查。

以 Java SDK 為例,獲取 Message ID 的方法如下:

  1. SendResult sendResult = producer.send(msg);
  2. String msgId = sendResult.getMessageId();

查詢結果說明

查詢到消息後,您可以在消息詳情頁麵看到每條消息的基本屬性,消息體下載鏈接以及消息的消費狀態,如下圖所示:

res

其中,投遞狀態是 MQ 根據各個 Consumer ID 的消費進度計算出的結果,投遞狀態的信息參考以下表格。

注意:投遞狀態僅僅是根據消費進度估算的結果,如果需要詳細的消費信息,請使用消息軌跡工具查詢。消息軌跡可以展示該條消息的完整鏈路,具體請參見查詢消息軌跡

投遞狀態表

投遞狀態 可能的原因
已訂閱,並且消息已被消費 該訂閱組已經正常消費過這條消息
已訂閱,但消息被過濾表達式過濾,請查看 Tag 該消息的 Tag 不符合消費方的訂閱關係,消息被過濾,可以在控製台>訂閱管理>消費者狀態查詢菜單查詢訂閱方的訂閱關係
已訂閱,但消息未被消費 該訂閱組訂閱了該消息,但還未消費,有可能是消費過慢,或者消費出現異常導致阻塞
已訂閱,但是訂閱組當前不在線 該訂閱組訂閱了該消息,但是不在線,請檢查消費者端應用不在線的原因
未知異常 出現未收錄異常,可以進工單係統提工單解決

消費驗證

MQ提供了消費驗證功能,該功能可以將指定消息推送給指定的在線客戶端,以檢測客戶端消費該消息的邏輯和結果是否符合預期。

注意:消費驗證功能僅僅是用於驗證客戶端的消費邏輯是否正常,並不會影響正常的收消息流程,因此消息的消費狀態等信息在點擊消費驗證後並不會改變。

根據 Message Key 查詢

Message Key 查詢消息的原理是,MQ 根據用戶設置的 Message Key 信息建立消息的索引信息,當用戶輸入 Key 進行查詢時,根據該索引即可匹配相關的消息返回。

注意:

  1. Message Key 查詢條件是用戶設置的 Message Key 屬性。
  2. Message Key 查詢僅僅返回符合條件的最近的 64 條消息,因此建議業務方設置 Key 時盡可能唯一,並具有業務區分度。

設置 Message Key 的方法:

  1. Message msg = new Message("Topic","*","Hello MQ".getBytes());
  2. /**
  3. * 對每條消息設置其檢索的Key,該Key值設置代表消息的業務關鍵屬性,請盡可能全局唯一。
  4. * 以方便您在無法正常收到消息情況下,可通過MQ控製台查詢消息。不設置也不會影響消息正常收發
  5. */
  6. msg.setKey("TestKey"+System.currentTimeMillis());

查詢樣例如下圖所示:

key

根據 Topic 查詢

根據 Topic 查詢一般用在前兩種查詢條件都無法獲得的情況下,根據 Topic 和消息的發送時間範圍,批量獲取該時間範圍內的所有消息,然後再找到關心的數據。

注意:

  1. Topic 查詢屬於範圍查詢,獲取 Topic 下符合時間條件的所有消息,消息量大,建議盡量縮短查詢區間。
  2. Topic 查詢數據量大,采用分頁展示。

查詢樣例如下圖所示:

topic

最後更新:2016-11-23 16:04:04

  上一篇:go 發布訂閱管理__控製台使用指南_消息隊列 MQ-阿裏雲
  下一篇:go MQTT 管理__控製台使用指南_消息隊列 MQ-阿裏雲