雲訊息佇列 RocketMQ 版提供了三種訊息查詢的方式,分別是按Message ID、Message Key以及Topic查詢。您可以通過訊息查詢驗證訊息是否發送成功、驗證訊息發送的內容是否正確、以及進一步查看訊息的軌跡資訊。
查詢方式說明
由於訊息在雲訊息佇列 RocketMQ 版中儲存的時間預設為3天,即只能查詢從當前查詢時間算起3天內的訊息。例如,目前時間是2019年06月10日15:09:48,那麼能查詢到的某Topic下的訊息最早的時間點為2019年06月07日15:09:48。
三種查詢方式的特點和對比如下表所述。
查詢方式 | 查詢條件 | 查詢類別 | 說明 |
按Message ID查詢 | Topic+Message ID | 精確查詢 | 根據Topic和Message ID可以精確定位任意一條訊息,擷取訊息的屬性。 |
按Message Key查詢 | Topic+Message Key | 模糊查詢 | 根據Topic和Message Key可以匹配到包含指定Key的最近64條訊息。 重要 建議訊息生產方為每條訊息設定儘可能唯一的Key,以確保相同的Key的訊息不會超過64條,否則訊息會漏查。 |
按Topic查詢 | Topic+時間段 | 範圍查詢 | 根據Topic和時間範圍,批量擷取合格所有訊息,查詢量大,不易匹配。 |
推薦查詢過程
推薦按照以下流程查詢訊息。

操作步驟
登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列,單擊实例列表。
在頂部功能表列,選擇地區,如華東1(杭州)。
在執行個體列表頁面,找到目標執行個體,在其操作列,單擊更多,然後在下拉式功能表中,選擇消息查询。
在消息查询頁面,您可選擇以下任意一種查詢方式,然後按頁面提示輸入相應資訊,再單擊查询來查詢訊息。
按 Message ID 查询
按Message ID查詢訊息屬於精確查詢,您輸入Topic和Message ID即可精確查詢到任意一條訊息。因此,為了儘可能精確地查詢,建議在發送訊息成功後將Message ID資訊列印到日誌中,方便問題排查。
以Java SDK為例,擷取Message ID的方法如下。
SendResult sendResult = producer.send(msg); String msgId = sendResult.getMessageId();其他語言可參見SDK參考概述。
按 Message Key 查询
雲訊息佇列 RocketMQ 版根據您設定的Message Key建立訊息的索引資訊,當您輸入Key進行查詢時,雲訊息佇列 RocketMQ 版根據該索引即可匹配相關的訊息返回。
重要按Message Key查詢的條件是您在發送訊息時已設定Message Key屬性。
按Message Key查詢僅返回合格最近的64條訊息,因此建議您儘可能保證設定的Key是唯一的,並具有業務區分度。
設定Message Key的方法如下。
Message msg = new Message("Topic","*","Hello MQ".getBytes()); /** * 對每條訊息設定其檢索的Key,該Key值代表訊息的業務關鍵屬性,請儘可能全域唯一。 * 以方便您在無法正常收到訊息情況下,可通過訊息佇列RocketMQ版控制台查詢訊息。不設定也不會影響訊息正常收發。 */ msg.setKey("TestKey"+System.currentTimeMillis());按 Topic 查询
按Topic查詢一般用在Message ID和Message Key都無法獲得的情況下,根據Topic和訊息的發送時間範圍,批量擷取該時間範圍內的所有訊息,然後再找到關心的資料。
重要若按Topic查詢訊息,請注意以下幾點:
按Topic查詢屬於範圍查詢,擷取Topic下符合時間條件的所有訊息,訊息量大,建議盡量縮短查詢區間。
按Topic查詢訊息量大,採用分頁展示。
查詢結果說明
您可以在控制台的消息查询頁面看到查詢到的訊息。直接顯示的資訊包含Message ID、Tag、Key、產生時間及儲存時間。此外,您還可以查詢訊息軌跡、進行消費驗證或下載訊息。
消費驗證
雲訊息佇列 RocketMQ 版提供了消費驗證功能,該功能可以將指定訊息推送給指定的線上用戶端,以檢測用戶端消費該訊息的邏輯和結果是否符合預期。
消費驗證功能僅用於驗證用戶端的消費邏輯是否正常,並不會影響正常的收訊息流程程,因此訊息的消費狀態等資訊在消費驗證後並不會改變。
消費驗證功能僅用於驗證用戶端的消費邏輯是否正常,並不會影響正常的收訊息流程程,因此訊息的消費狀態等資訊在消費驗證後並不會改變。

相關文檔
您可以根據訊息查詢結果進一步查看訊息的軌跡資訊,查看訊息的消費狀態和消費結果。具體操作,請參見查詢訊息軌跡。