轻量消息队列(原 MNS)提供消息轨迹查询功能,您可以通过消息轨迹查询消息的完整链路信息,包括消息的发送、订阅匹配、推送、消费等环节的时间、结果、生产者和消费者身份等信息,帮助您快速排查消息收发过程中的异常问题。
使用场景
轻量消息队列(原 MNS)的消息轨迹功能可以帮助您解决以下问题:
查看消息是否发送成功:当您怀疑消息没有收到时,可以通过消息轨迹确认消息是否成功发送到队列或主题,以及消息是否被消费。
排查消息重复消费问题:当您发现同一条消息被多次消费时,可以通过消息轨迹查看消息的完整消费记录,包括每次消费的时间、消费者身份和消费结果。
排查主题推送失败问题:当主题的 HTTP 订阅、邮件订阅等推送失败时,可以通过消息轨迹查看推送的详细状态和失败原因。
排查消息延迟问题:当您发现消息消费延迟过高时,可以通过消息轨迹查看消息在各个环节的时间,定位延迟发生的环节。
查看定时消息的定时状态:查看定时消息是否已到达预设的定时时间。
查询生产者和消费者的身份信息:查看消息发送方的 IP 地址、AccessKey,以及消费者的 IP 地址等信息,帮助您进一步排查问题。
轨迹参数说明
队列消息轨迹
队列消息轨迹包含发送信息、消息信息和消费信息三部分。
发送信息
普通发送场景
参数 | 说明 |
消息来源 | 消息的来源类型为生产者,指由生产者直接发送到队列 |
方法 | API 操作类型,例如:SendMessage、BatchSendMessage |
生产者 IP | 发送消息的客户端 IP 地址 |
AccessKey | 发送消息的 AccessKey |
发送时间 | 消息到达队列的服务器时间 |
结果 | 发送结果,显示"成功"或具体的错误信息 |
死信场景
当消息从原队列进入死信队列时,会产生一条新的发送轨迹记录。
参数 | 说明 |
消息来源 | 常量:死信 |
原队列 | 消息原本所在的队列名称 |
原队列消息 ID | 消息在原队列中的 Message ID |
发送时间 | 消息进入死信队列的时间 |
结果 | 发送结果,显示"成功"或具体的错误信息 |
订阅推送场景
当主题通过队列订阅将消息推送到队列时,会产生一条发送轨迹记录。
参数 | 说明 |
消息来源 | 常量:主题的队列订阅 |
主题 | 推送消息的主题名称 |
订阅 | 推送消息的订阅名称 |
原消息 ID | 消息在主题中的 Message ID |
发送时间 | 消息推送到队列的时间 |
结果 | 发送结果,显示"成功"或具体的错误信息 |
其他云产品场景
当事件通知通过队列订阅将消息推送到队列时,会产生一条发送轨迹记录。
参数 | 说明 |
消息来源 | 常量:其他云产品 |
方法 | 常量:Notify |
发送时间 | 消息推送到队列的时间 |
结果 | 发送结果,显示"成功"或具体的错误信息 |
消息信息
普通消息
参数 | 说明 |
消息类型 | 常量:普通消息 |
消息 ID | 消息的唯一标识符 |
队列 | 消息所在的队列名称 |
保存时长 | 消息在队列中的最长保存时间,对应队列的 MessageRetentionPeriod 属性 |
可见性超时时长 | 消息被消费后的默认不可见时长,对应队列的 VisibilityTimeout 属性 |
定时消息
参数 | 说明 |
消息类型 | 常量:定时消息 |
消息 ID | 消息的唯一标识符 |
队列 | 消息所在的队列名称 |
保存时长 | 消息在队列中的最长保存时间,对应队列的 MessageRetentionPeriod 属性 |
可见性超时时长 | 消息被消费后的默认不可见时长,对应队列的 VisibilityTimeout 属性 |
定时时长 | 消息的定时时长(秒) |
预设定时结束时间 | 消息预设的可消费时间 |
消费信息
队列的消息消费轨迹按 ReceiptHandle 分组展示,每个 ReceiptHandle 代表消息的一次消费会话。
参数 | 说明 |
本次结果 | 本次消费会话的最终结果,包括但不限于:
|
消费者 IP | 接收或操作消息的客户端 IP 地址 |
AccessKey | 操作消息的 AccessKey |
ReceiptHandle | 消息句柄,用于删除消息或修改消息可见性 |
操作时间 | 执行操作的服务器时间 |
操作 | 执行的 API 操作,包括:
|
一条消息可能产生多个 ReceiptHandle,每次调用 ReceiveMessage 或 BatchReceiveMessage 都会生成新的 ReceiptHandle。
如果消费者在消息可见性超时前删除了消息,则本次消费会话结果为"成功"。
如果消费者获取消息后未删除,消息在可见性超时后会重新可消费,产生新的 ReceiptHandle。
如果使用已失效的 ReceiptHandle 操作消息,会返回 404 错误。
主题消息轨迹
主题消息轨迹包含发送信息、订阅匹配信息和推送信息三部分。
发送信息
普通发送场景
参数 | 说明 |
消息来源 | 消息的来源类型为生产者,指由生产者直接发送到主题 |
方法 | API 操作类型,PublishMessage |
生产者 IP | 发送消息的客户端 IP 地址 |
AccessKey | 发送消息的 AccessKey |
发送时间 | 消息到达主题的服务器时间 |
结果 | 发送结果,显示"成功"或具体的错误信息 |
其他云产品场景
当事件通知通过队列订阅将消息推送到队列时,会产生一条发送轨迹记录。
参数 | 说明 |
消息来源 | 常量:其他云产品 |
方法 | API 操作类型,PublishMessage |
发送时间 | 消息推送到主题的时间 |
结果 | 发送结果,显示"成功"或具体的错误信息 |
订阅匹配信息
主题收到消息后,会根据订阅的过滤条件(FilterTag)匹配符合条件的订阅,并向这些订阅推送消息。
参数 | 说明 |
消息 ID | 消息的唯一标识符 |
Tag | 消息的标签,用于订阅过滤 |
订阅名 | 匹配到的订阅名称 |
订阅类型 | 订阅的终端节点类型,包括:
|
推送信息
队列订阅
参数 | 说明 |
消息 ID | 推送到队列后的新消息 ID |
消费结果 | 推送是否成功,显示"成功"或具体的错误信息 |
推送时间 | 开始推送的时间 |
处理耗时 | 推送耗时,单位为毫秒 |
其他订阅(HTTP/邮箱/阿里短信)
参数 | 说明 |
推送结果 | 推送的状态码和结果,包括:
|
推送时间 | 开始推送的时间 |
处理耗时 | 推送耗时,单位为毫秒 |
使用限制
消息轨迹开关:消息轨迹默认处于关闭状态,可在消息轨迹页面手动打开功能。
查询时间范围:开始时间的取值范围是近 15 天,每次查询的时间跨度不超过 3 天。
计费说明
请参见消息轨迹费用。
消息轨迹存储时长
消息轨迹数据保存 15 天,超过 15 天的轨迹数据将被自动删除,无法查询。
查询方式
轻量消息队列(原 MNS)提供 5 种消息轨迹查询方式,您可以根据实际场景选择合适的查询方式。
查询方式 | 适用场景 | 返回结果 |
按消息 ID 查询 | 已知消息 ID,需要查询该消息的完整轨迹 | 返回唯一的消息轨迹 |
按 RequestID 查询 | 已知 API 请求的 RequestID,需要查询该请求涉及的消息 | 返回该请求涉及的消息轨迹 |
按队列名查询 | 需要查看某个队列在一段时间内的所有消息轨迹 | 返回该队列在指定时间范围内的消息轨迹 |
按主题名查询 | 需要查看某个主题在一段时间内的所有消息轨迹 | 返回该主题在指定时间范围内的消息轨迹 |
按订阅名查询 | 需要查看某个订阅在一段时间内推送的所有消息轨迹 | 返回该订阅在指定时间范围内推送的消息轨迹 |
如果已知消息 ID,优先使用按消息 ID 查询,可以快速获取精确结果。
如果需要排查一段时间内的消息问题,可以使用按队列名、主题名或订阅名查询。
按 RequestID 查询适用于排查 API 调用问题,例如批量发送或批量消费的场景。
操作步骤
查询消息轨迹
在左侧导航栏,选择。
在顶部菜单栏,选择地域。
点击消息轨迹未开启按钮,打开消息轨迹功能。
在消息轨迹页面,根据需要选择查询方式并输入查询条件。
按消息 ID 查询:输入消息 ID,单击查询。
按 RequestID 查询:输入 API 请求的 RequestID,单击查询。
按队列名查询:选择队列名称,选择开始时间(最近 15 天内,时间跨度不超过 3 天),单击查询。
按主题名查询:选择主题名称,选择开始时间(最近 15 天内,时间跨度不超过 3 天),单击查询。
按订阅名查询:选择主题和订阅名称,选择开始时间(最近 15 天内,时间跨度不超过 3 天),单击查询。
在查询结果列表中,找到目标消息,单击操作列的详情。
在消息轨迹详情页面,查看消息的完整轨迹信息。
队列消息轨迹详情:包含发送信息、消息信息和消费信息。
发送信息:查看消息的来源、发送方法、生产者 IP、AccessKey、到达时间和发送结果。
消息信息:查看消息 ID、队列名称、保存时长、可见性超时时长等。如果是定时消息,还会显示定时时长和预设定时结束时间。
消费信息:按 ReceiptHandle 分组展示消息的消费记录。展开某个 ReceiptHandle,可以查看该消费会话的所有操作,包括接收、删除、修改可见性等操作的时间、消费者 IP 和操作结果。
主题消息轨迹详情:包含发送信息、订阅匹配信息和推送信息。
发送信息:查看消息的发送方法、生产者 IP、AccessKey、到达时间和发送结果。
订阅匹配信息:查看消息 ID、Tag、匹配到的订阅名称和订阅类型。
推送信息:查看每个订阅的推送结果、推送时间等。对于队列订阅,会显示推送后的新消息 ID;对于 HTTP、邮件、短信订阅,会显示推送状态码和推送耗时。

(可选)如果需要查看队列订阅推送到队列后的消息轨迹,可以单击推送信息中的Message ID链接,跳转到该队列消息的轨迹详情。

常见问题
Q:为什么查询不到消息轨迹?
A:可能的原因包括:
消息轨迹数据超过 15 天已被删除。
查询的时间范围不准确,建议适当扩大查询时间范围。
消息 ID 或 RequestID 输入错误,请检查后重新查询。
Q:消息轨迹中显示"未响应"是什么意思?
A:"未响应"表示消费者接收消息后,在可见性超时时间内既未删除消息,也未修改可见性超时时间,导致消息可见性超时后重新可消费。建议检查消费者程序是否正常处理消息并删除消息。
Q:为什么一条消息有多个 ReceiptHandle?
A:每次调用 ReceiveMessage 或 BatchReceiveMessage API 接收消息时,都会生成一个新的 ReceiptHandle。如果消费者接收消息后未删除,消息可见性超时后会重新可消费,此时再次接收会生成新的 ReceiptHandle。
Q:消息轨迹会影响消息收发的性能吗?
A:消息轨迹的记录是异步进行的,不会影响消息收发的性能和可靠性。即使轨迹记录失败,也不会影响正常的消息收发。