You need to enable JavaScript to run this app.
导航

死信消息管理

最近更新时间2024.04.19 11:50:04

首次发布时间2022.03.05 11:34:49

在消息队列 RocketMQ版控制台中,您可以在线查询死信消息,并在消息被过期清理前,及时导出未正常消费的信息,排查消息生产或消费问题,避免消息丢失。

注意事项

  • 一个死信队列对应一个 Group ID, 而不是对应单个消费者实例。一个死信队列包含了对应 Group ID 产生的所有死信消息,不论该消息属于哪个 Topic。
  • 创建 Group 时,消息队列 RocketMQ版会自动为其创建一个对应的死信队列。
  • 死信消息将会根据存储时长被系统定时删除,在查看或导出过程中,可能会存在死信消息失效的情况。

查询死信消息

  1. 登录消息队列 RocketMQ版控制台
  2. 在顶部菜单栏中选择地域。
  3. 实例列表页面单击实例名称。
  4. 死信管理页签中选择消息查询方式,并指定筛选条件。
    目前支持按消息ID查询按时间范围查询,请根据实际业务需求选择查询方式。
    • 按消息ID查询。 选择按消息ID查询,指定 Group ID 和消息 ID 查询死信息消息。按消息 ID 查询时,可以精确到某一条消息,适用于精确查询的情况。
    • 按时间范围查询。 选择按时间范围查询,指定 Group ID 和时间范围查询死信消息列表。 其中,时间指消息在投递重试达到最大次数后被发送到死信队列的时间。按时间范围查询时,会筛选出符合条件的消息列表,查询到的死信消息可能比较多。
  5. 查看查询结果。
    查询结果会即时显示在当前页面中,主要展示符合筛选条件的消息详情,包括消息 ID、Tag、Key、生产者地址、消息大小(Bytes)、重试次数、生成时间、存储时间。其中,重试次数表示手动重发死信消息后,该消息再次进入死信队列的次数。

导出死信消息

查找到指定的死信消息后,可以在死信管理页签中导出死信消息,支持批量导出,一次最多导出 20 条消息。
操作步骤如下。

  1. 在控制台中查询死信消息。详细操作请参考查询死信消息

  2. 在查询结果中,找到指定的死信消息,并在其操作列中单击导出消息
    您也可以勾选多条死信消息,并单击左下角的批量导出。页面会自动下载 CSV 格式的文件,其中包含指定导出的所有死信消息。
    导出的 CSV 文件中,各个消息字段说明如下。

    消息字段

    说明

    instanceId

    实例 ID。

    topic

    消息所属的 Topic。

    msgId

    消息的 ID。

    bornHost

    消息产生的地址。

    bornTimestamp

    消息产生的时间戳。

    storeTimestamp

    消息存储到消息队列 RocketMQ版服务端的时间戳。

    reconsumeTimes

    消息消费失败的次数。

    properties

    消息的属性。JSON 格式。

    body

    消息内容,即消息体。Base64 编码格式。您需要解码后才能查看实际消息内容。

    bodyCRC

    消息体 CRC。

    msgNotExist

    消息是否已过期删除。

    • true:消息已因过期而被删除,无法导出查看。
    • false:消息仍未过期,可以导出查看。

重新发送死信消息

消息进入死信队列之后,说明该消息消费失败,消费者在正常情况下无法正确地消费该消息,例如遇到了网络断连、应用故障等问题。在这种场景下,您可以查询、导出死信消息进行问题排查,当找到对应的解决方案并处理问题之后,在控制台中重新发送死信队列中的消息。此时该消息的原消费者可以重新消费消息。

说明

  • 若此死信消息所在的 Topic 是顺序消息类型的 Topic,重新发送死信消息可能会导致 Topic 出现消息乱序。延迟消息和事务消息也会失去其对应的消息属性。
  • 死信消息被重新发送成功后,也会显示在死信队列中,直到消息过期删除。

操作步骤如下。

  1. 在控制台中查询死信消息。
    详细操作请参见查询死信消息

  2. 重新发送死信消息。
    您可以根据业务需要,选择以下任一方式重发死信消息。

    发送方式

    步骤

    逐条发送死信消息

    1. 在查询结果中,找到指定的死信消息,并在其操作列中单击重新发送
    2. 在弹出的对话框中单击立即发送

    批量发送死信消息

    1. 选择多条死信消息,并在页面左下角单击批量重发
    2. 在弹出的对话框中单击立即发送

    按时间范围重发死信消息

    1. 选择多条死信消息,并在页面左下角单击按时间范围重发
    2. 填写相关设置。
      • Group:选择消息重新发送到的 Group,消息会重发至指定 Group 对应的重试 Topic 中。
      • 消息存储时间:指定消息的时间范围,消息达到服务端的时间如果在此范围内,将会被重新发送到指定 Group 对应的重试 Topic 中。
    3. 单击立即发送