當裝置異常或訊息收發不符合預期時,您可以使用裝置狀態查詢功能查詢指定裝置的線上狀態、訂閱關係及裝置軌跡和該裝置的訊息列表,擷取MQTT用戶端的狀態資訊,協助您快速定位異常原因。
操作步驟
登入雲Message QueueTT 版控制台,並在左側導覽列單擊实例列表。
在頂部功能表列選擇目標地區,然後在執行個體列表中單擊執行個體名稱進入实例详情頁面。
在執行個體列表中找到目標執行個體,在其操作列中,選擇。
在设备状态查询頁面,設定Group ID和Device ID,然後單擊查询。
查詢結果相關欄位說明如下:
欄位
說明
裝置狀態
Client ID
用戶端的ID。
在线状态
用戶端的線上狀態:
線上
離線
客户端地址
用戶端的IP地址。
cleanSession
用戶端的會話是否清除,詳細資料,請參見cleanSession。
最后更新时间
用戶端狀態的最後更新時間。
訂閱關係
父级 Topic
客訂閱的訊息主題,MQTT的一級Topic。
子级 Topic
MQTT的二級Topic,甚至三級Topic都是父級Topic下的子類。
QoS
用戶端與服務端訊息傳輸的服務品質層級,詳細資料,請參見QoS。
Client ID 衝突排查
當系統提示 clientId conflict(Client ID 衝突)時,表示同一 Client ID 同時發起了多個重複串連。系統會保留最新串連並將舊串連互踢下線。
衝突現象與原因
用戶端識別碼 在同一 MQTT 執行個體中必須全域唯一。當裝置或應用在多處使用相同的 Client ID 發起串連時,即會觸發互踢:系統保留最後建立的串連,斷開之前存在的同名串連。
排查方法
在查詢結果頁面,單擊设备轨迹頁簽,查看該裝置的串連記錄。若在短時間記憶體在多條來自不同存取點或 IP 位址的串連記錄,且記錄的時間段存在重疊,即可確認發生了 Client ID 衝突互踢。可通過查看來源資訊(存取點地址或 IP)判斷是否有多個用戶端使用了相同的 Client ID 建立了重複串連。
解決建議
檢查代碼或裝置配置,確保每個裝置使用全域唯一的 Client ID,避免多裝置或多進程並發使用同一 Client ID 建立串連。
在查詢結果頁面單擊设备轨迹和消息轨迹頁簽,您還可以查看到指定裝置的軌跡資訊和裝置訊息列表。查詢結果的欄位和詳細說明,請參見裝置軌跡查詢和訊息軌跡查詢。
常見問題
如何確認 MQTT 訂閱關係是否失效或當前是否生效?
目前控制台暫無直接的"訂閱失效歷史"查詢入口。可通過以下方式確認訂閱關係的目前狀態:
登入控制台,進入设备状态查询功能,輸入 Group ID 和 Device ID 後單擊查詢。
在查詢結果的訂閱關係欄位中,確認裝置當前是否已成功訂閱目標 Topic。
若需排查歷史失效問題,建議結合裝置端日誌分析:確認裝置重連後是否發送了 SUBSCRIBE 報文。需要注意,即使 cleanSession=false,裝置重連後也需主動重新發送 SUBSCRIBE 報文,才能接收新訊息。可結合串連日誌推斷訂閱狀態在特定時間段的變化情況。
如何查看裝置的精確離線時間或判斷監控顯示的離線是否準確?
可通過以下方式查看裝置的精確上下線時間:
在设备状态查询頁面,單擊设备轨迹頁簽,查看該裝置精確的上線和下線時間點記錄。
若控制台未顯示資料,或设备轨迹顯示裝置線上,但監控圖表顯示離線,可能是由於監控資料擷取存在延遲所致。建議重新整理頁面並查看最新串連數。
需要注意,查詢結果中的最后更新时间欄位僅代表用戶端狀態最後一次發生變更的時間,並非裝置精確的中斷連線時刻。如需確認裝置的精確斷聯時刻,應以设备轨迹頁簽的記錄為準。
如何查看 MQTT 執行個體的同時線上串連數及明細?
可通過以下方式查看 MQTT 執行個體的串連數資訊:
在 MQTT 執行個體詳情頁面,可查看該執行個體當前同時線上串連數的概覽數值。
如需查看具體裝置的線上狀態明細(串連數明細),可使用本文檔所述的设备状态查询功能,按 Group ID 和 Device ID 逐裝置查詢具體數值。
如需查看歷史串連數趨勢或計費相關的串連統計,請參見相關計費文檔或執行個體監控圖表。
相關文檔
如果需要查詢裝置的軌跡,請參見裝置軌跡查詢。