tencent cloud

消息队列 MQTT 版

动态与公告
新功能发布记录
产品简介
TDMQ 产品系列介绍与选型
什么是消息队列 MQTT 版
应用场景
技术架构
产品系列
MQTT 协议兼容说明
开源对比
高可用
产品约束与使用配额
基本概念
开服地域
购买指南
计费概述
续费说明
查看消费明细
欠费说明
退费说明
快速入门
入门流程指引
准备工作
公网接入
VPC 网络接入
用户指南
使用流程指引
配置账号权限
新建集群
管理 Topic
连接集群
查询消息
管理客户端
管理集群
查看监控和配置告警
数据集成
集成数据到云函数 SCF
集成数据到 CKafka
集成数据到 RocketMQ
开发指南
MQTT 5 高级特性
数据面 HTTP 接口说明
配置自定义域名
配置 SQL 过滤
配置点对点订阅
MQTT over QUIC
管理客户端订阅
消息增强规则
实践教程
MQTT 客户端开发注意事项
可观测能力
Topic 与通配符订阅
API 参考
History
Introduction
API Category
Making API Requests
Cluster APIs
Topic APIs
Authorization Policy APIs
User APIs
Client APIs
Message Enhancement Rule APIs
Message APIs
Data Types
Error Codes
SDK 参考
接入点格式
Java SDK
C SDK
Javascript/Node.JS/小程序
Go SDK
iOS SDK
JavaScript SDK
Dart SDK
Python SDK
.NET
安全与合规
权限管理
常见问题
相关协议
隐私协议
数据处理和安全协议
消息队列 MQTT 版服务等级协议
联系我们

消息轨迹

PDF
聚焦模式
字号
最后更新时间: 2026-01-30 15:23:30

引言

消息队列 MQTT 版(TDMQ MQTT)提供的消息轨迹功能,能够将业务上下游信息完整串联,帮助您更好地排查异常信息,定位问题。它记录了消息从生产者发送到服务端,再由服务端投递给消费者的全生命周期。本文将介绍消息轨迹的核心概念、关键参数定义,并重点介绍如何利用轨迹数据进行可观测性分析,快速定位“消息未收到”、“消费延迟”等典型故障.

什么是消息轨迹

定义

消息轨迹是指一条消息从生产者发送到云消息队列 TDMQ MQTT 版服务端,再到消费者消费,整个过程中的各个相关节点的时间、执行结果、生产者 IP、消费者 IP 等详细信息汇聚而成的完整链路信息。如果消息收发不符合预期,您可以通过查询消息轨迹,快速分析和定位问题,及时恢复业务。

组成

一条完整的 MQTT 消息轨迹由以下两部分组成:
消息生产轨迹:记录生产者向 Broker 发送消息的过程。
核心关注:生产端是否成功发送?服务端是否成功接收?
消息消费轨迹:记录 Broker 向所有匹配订阅的消费者投递消息的过程。
核心关注:有哪些消费者订阅了该主题?消息是否成功推送到客户端?客户端是否返回了确认(ACK)?

消息轨迹使用场景

消息队列 MQTT 版支持查询消息收发流程中的关键数据,通过查看轨迹信息可快速获取当前业务处理的状态,帮助您快速定位异常问题。
消息轨迹的典型应用场景如下:
场景一:查看某条消息是否发送成功或是否消费成功。
确认消息是否由设备成功发出。
确认服务端是否接收并持久化。
确认消费者是否在线且在订阅列表中。
场景二:查看消费进程是否正常。
对比“服务端接收时间”与“投递给消费者的时间”。
检查 QoS 交互流程是否完整(例如 QoS 1 是否缺少 PUBACK)。
场景三:查看生产者、消费者身份信息,进一步排查问题原因。
查看实际收发消息的 Client ID 和 IP 地址,排除非法连接或客户端 ID 混用的问题。

通过消息轨迹排查消费异常实践

在实际业务中,最常见的问题是“设备发了消息,但 App/服务器没收到”。可按照以下步骤,通过消息轨迹配合客户端事件进行诊断:


路径一:消息视角全链路排查

适用场景:已知某条消息(Message ID)或大概的发送时间,想要确认这条消息被哪些设备消费了,或者为何没被消费。
入口控制台 > 消息查询 > 消息轨迹。

查看某条消息的消息轨迹

前往消息查询页面,确定目标集群、Topic(需要填写准确的Topic Name 或订阅时的 Topic Filter )和时间范围后搜索目标消息:

选择具体的某个消息 ID,并单击查看详情,可查看详细的消息轨迹。

在消息视角全链路排查中可以根据以下现象进行判断及排查:

检查“消息生产”

现象
判断
排查/解决建议
搜不到该消息轨迹
消息未到达服务端
1. 检查设备网络是否连通。
2. 检查设备端代码是否捕获到发送异常。
3. 确认设备发送的 Topic 与查询的 Topic 是否严格一致。
请求结果:失败
服务端拒绝接收
1. 检查设备是否有发布该 Topic 的权限(ACL)。
2. 检查消息体大小是否超过服务端限制。
请求结果:成功
生产正常
生产者正常,若有问题可能出在消费链路

检查“消息消费”

现象
判断
排查/解决建议
列表中找不到目标 Client ID
消费者运行异常,导致消息无法消费到。
1. 检查 Topic Filter:消费端的订阅规则(通配符)是否能匹配当前消息的 Topic?
2. 检查订阅状态:确认消费端在消息发送时是否处于在线订阅状态(或建立了持久会话)。
列表中有Client ID,但请求结果:失败
云端推送失败,消费者未收到队列的消息推送。
1. 检查消费端设备是否离线
2. 检查消费端网络状况(弱网环境)。
最后推送时间 >> 生产时间
(时间差很大)
消费堆积/延迟
1. 消费端处理逻辑过慢,阻塞了 MQTT 线程。
2. 客户端频繁上下线导致消息在服务端排队。
3. 若使用了共享订阅:查看共享订阅组的消费者个数是否合理
QoS Packet 不闭环
QoS 确认异常
对于消息生产和消息消费过程,消息轨迹详细展示各个请求Packet 的请求结果和时间
QoS 0
正常流程:服务端推送 PUBLISH
若请求失败,可能是TCP连接不稳定导致
QoS 1 消息
正常流程:服务端推送 PUBLISH -> 客户端回复 PUBACK。
若只有 PUBLISH 无 PUBACK,即客户端收到了消息,但未向服务端返回确认。服务端会认为发送失败并不断重试,导致消息重复或阻塞。
QoS 2 消息
正常流程:PUBLISH -> PUBREC -> PUBREL -> PUBCOMP。
流程中断在中间任意环节时,可判断通常是网络链路不稳定导致确认报文丢失。

路径二:客户端视角排查

适用场景:关注特定设备(例如设备 A 反馈收不到指令,或数据上报不成功),需要查看该设备所有的收发记录。
入口控制台 > 客户端管理 > 单击具体 Client ID > 客户端消息轨迹 Tab 页。

查看某个客户端消息轨迹

前往客户端管理页面,搜索相应客户端 ID。

单击查看详情,查看对应客户端基本信息,Session 详情。

在 Tab 页中可选择查看客户端消息轨迹。

在此视图下,系统会筛选出所有与该设备有关的轨迹,包括它发送的(作为生产者)和接收的(作为消费者)消息。
生产者(Producer):代表该设备向云端上报数据的记录。
消费者(Consumer):代表云端向该设备下发指令/推送消息的记录。

生产者问题

1. 筛选或寻找“客户端类型”为生产者的记录,确认消息是否成功发送到 MQTT 实例
2. 找不到符合条件的“生产者”记录,检查生产者代码的参数是否正确,设备端发起网络请求是否成功。
若根据上述几个方法查到消息确实已经被消息队列 MQTT 版服务端存储,则可以重点排查后续的消息消费过程是否存在异常。

消费者问题

如果您怀疑设备收不到指令,请筛选或寻找“客户端类型”为消费者的记录:
列表中没有“消费者”记录
结论:云端没有给该设备推过消息。
原因:可能是设备掉线了(Broker 认为不在线就不推了),或者是发布者发错 Topic 了(导致没匹配上该设备的订阅)。
有记录,但单击查看详情发现没有 ACK
结论:云端推了,设备也(可能)收到了,但设备卡死了没回复确认。
建议:检查设备端业务逻辑是否阻塞了 MQTT 客户端线程。

附:消息轨迹相关参数说明

消息生产参数(上行链路)

参数
说明
排查要点
请求时间
发布者客户端(Producer)向服务端发出请求 Packet 的时间点
消息的开始生产时间。
请求 Packet 类型
请求 Packet 报文类型:
PUBLISH:发布消息
PUBACK:发布确认,对 QoS 1 等级的 PUBLISH 报文的确认响应。
PUBREC:发布已收到,QoS 2 等级的第一步确认,表示已收到一个 QoS 2 消息。
PUBREL:发布释放,QoS 2 等级的第二步,是发送方对 PUBREC 的响应,表示请求释放之前已初步确认的消息。
PUBCOMP:发布完成,QoS 2 等级的最后一步确认,表示整个 QoS 2 消息的传输流程已全部完成。
PUBLISH: 正在发送消息。
PUBACK: QoS 1 的确认。
客户端 ID
发布这条消息的客户端唯一标识符,用于追踪消息的来源。
用于确认来源,排除“脏数据”。
QoS
消息的服务质量等级,决定了消息传递的可靠性和保证程度,包括 0(最多一次)、1(至少一次)、2(恰好一次)。
决定了消息传递的可靠性机制。
请求结果
服务端对这条消息发布请求的处理结果。
成功: 服务端已接收。
失败: 发送被拒绝。

消息消费参数(下行链路)

参数
说明
排查要点
客户端 ID
服务端投递这条消息的目标客户端唯一标识符。
如果此处没有您预期的 ID,说明该设备未订阅成功。
QoS
消息的服务质量等级,决定了消息传递的可靠性和保证程度,包括 0(最多一次)、1(至少一次)、2(恰好一次)。
决定了消息传递的可靠性机制。
最后推送时间
服务端最后一次向该客户端推送此消息的时间点。
如果此时间一直在更新,说明服务端正在重试投递。
请求结果
服务端投递这条消息的最终结果。
成功: 流程闭环。
失败: 需展开详情查看具体卡在哪个 Packet。
单击客户端 ID 下方的右三角,可以查看服务端推送此消息的请求详情。
参数
说明
排查要点
请求时间
服务端向目标客户端(Consumer)发出请求 Packet 的时间点
消息的开始消费时间
请求 Packet 类型
请求 Packet 报文类型:
PUBLISH:发布消息
PUBACK:发布确认,对 QoS 1 等级的 PUBLISH 报文的确认响应。
PUBREC:发布已收到,QoS 2 等级的第一步确认,表示已收到一个 QoS 2 消息。
PUBREL:发布释放,QoS 2 等级的第二步,是发送方对 PUBREC 的响应,表示请求释放之前已初步确认的消息。
PUBCOMP:发布完成,QoS 2 等级的最后一步确认,表示整个 QoS 2 消息的传输流程已全部完成。
结合生产时间可计算端到端延迟。
请求结果
客户端对这条消息投递请求的处理结果。
重点观察是否有ACK类报文返回。



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈