消息查詢
如遇消息消費(fèi)有問題,則可通過查詢具體發(fā)送的消息內(nèi)容來(lái)排查問題。SOFAStack 消息隊(duì)列提供了三種消息查詢的方式,分別是按 Message ID、Message Key 以及 Topic 查詢。
操作步驟
在左側(cè)導(dǎo)航欄,選擇 中間件 > 消息隊(duì)列 > 消息查詢。
在 消息查詢 頁(yè)面,您可單擊以下任一頁(yè)簽,然后按頁(yè)面提示輸入相應(yīng)信息。
按 Message ID 查詢:Message ID 是由服務(wù)端生成的 32 位字符串,用于標(biāo)識(shí)一條消息。按 Message ID 查詢,即根據(jù) Topic 和 Message ID,精確定位任意一條消息,獲取消息的屬性。建議在發(fā)送消息成功后將 Message ID 信息打印到日志中,方便問題排查。獲取 Message ID 的方法如下:
SendResult sendResult = producer.send(msg); String msgId = sendResult.getMessageId();
按 Message Key 查詢:Message Key 指發(fā)送消息時(shí),設(shè)置到消息對(duì)象中的 Key 字段,消息隊(duì)列根據(jù)您設(shè)置的 Message Key 建立消息的索引信息。按 Message Key 查詢,即根據(jù) Topic 和 Message Key,匹配到包含指定 Key 的最近 64 條消息。設(shè)置 Message Key 的方法如下:
Message msg =new Message("Topic","*","Hello MQ".getBytes()); //Key 值代表消息的業(yè)務(wù)關(guān)鍵屬性,請(qǐng)盡可能全局唯一。 msg.setKey("TestKey"+System.currentTimeMillis());
按 Topic 查詢:即根據(jù) Topic 和消息的發(fā)送時(shí)間范圍,批量獲取該時(shí)間范圍內(nèi)的所有消息,查詢量大,不易匹配,一般用在 Message ID 和 Message Key 都無(wú)法獲得的情況下。
信息輸入完畢后,單擊 搜索。
在 消息查詢 頁(yè)面,您可以查看到所有查詢到的消息及其概覽信息,包括 Message ID、Tag、Key 和存儲(chǔ)時(shí)間。您還可以 查詢消息軌跡 以及查看消息詳情。
單元化說(shuō)明
在 LDC 單元化架構(gòu)環(huán)境下,可以自由切換單元,在指定單元內(nèi)進(jìn)行消息查詢,如下圖所示。