查询死信消息

最近更新时间:2025-06-10 16:17:02

我的收藏

操作场景

死信队列是一种特殊的消息队列,用于集中处理无法被正常消费的消息的队列。当消息在达到一定重试次数后仍未能被正常消费,TDMQ RocketMQ 版会判定这条消息在当前情况下无法被消费,将其投递至死信队列。
实际场景中,消息可能会由于持续一段时间的服务宕机,网络断连而无法被消费。这种场景下,消息不会被立刻丢弃,死信队列会对这种消息进行较为长期的持久化,用户可以在找到对应解决方案后,创建消费者订阅死信队列来完成对当时无法处理消息的处理。您可以通过导出消息的方式进行确认,或者在管控台进行指定消息的重发。

查询限制

消息查询最多可以查询近3天的消息。

特性说明

当消息被投递到死信队列后,消息不会再被消费者正常消费。消息查询最多可以查询近3天的消息,请尽量在死信消息产生的3天内进行处理,否则消息可能会被删除。
一个死信队列包含了对应的一个 Group 中所有 Topic 产生的所有死信消息。如果一个Group 中没有产生死信消息,则不会为其创建死信队列,也查询不到死信消息。

查询死信消息

1. 登录 TDMQ RocketMQ 控制台,在左侧导航栏单击死信查询
2. 在消息查询页面,选择好地域后根据页面提示输入查询条件。
集群:选择需要查询的死信消息所在的集群。
Group:选择需要查询的死信消息所在的Group。
时间范围:选择需要查询的时间范围,支持近30分钟,近1小时,近6小时,近24小时,近3天。
消息 ID:非必填。
不填写消息 ID:属于模糊查询。根据 Group ID 和死信消息产生的时间范围,批量查询该 Group ID在某段时间内产生的所有死信消息。
填写消息 ID:属于精确查询。根据 Group ID与 Message ID 精确定位到任意一条消息。
3. 单击查询,下方列表会展示所有查询到的结果并分页展示。

4. 您可以勾选多条死信消息后单击左上角的批量重发消息将死信消息批量重新发送到原队列的重试队列,也可以单击某条消息操作列的重发消息将单条死信消息重新发送。死信消息在被重新发送后,会被投递到原队列的重试队列,不会在死信队列中被立即删除,在达到消息生命周期(3天)后才会被删除。



5. 找到您希望查看内容或参数的消息,单击操作列的查看详情,即可查看消息的基本信息、内容(消息体)以及参数。


6. 单击操作列的查看消息轨迹,或者在详情页单击 Tab 栏的消息轨迹,即可查看该消息的消息轨迹(详细说明请参见 消息轨迹查询结果说明)。
可以看到当死信消息被重新投递后,消费状态变成页面死信重投完成。



导出死信消息

如果您想要导出所有的死信消息用来单独处理,您可以选择需要导出的信息后单击批量导出。若您想单条导出,您也可以单击操作列的导出消息

导出的文件包含以下字段:
字段
说明
instanceId
集群 ID
group
消息所属 Group
tags
消息 Tag
keys
消息 Key
messageId
消息 ID
bornHost
消息生产地址
bornTimestamp
消息生产时间
storeTimestamp
消息存储到服务端的时间
reconsumeTimes
消费失败次数
properties
消费属性
body
消息体
crc
消息体 CRC

死信消息重发

如果您确认代码已经完成修改,可以处理之前那些因为多次消费失败而最终进入死信队列的消息。
您可以勾选多条死信消息后单击左上角的批量重发消息将死信消息批量重新发送到原队列的重试队列,也可以单击某条消息操作列的重发消息将单条死信消息重新发送。死信消息在被重新发送后,服务端会将这些消息投递到原队列的重试队列,可以被正常消费,且不会在死信队列中被立即删除,在达到消息生命周期(3天)后才会被删除。