更新时间:2024-04-07 GMT+08:00

查询消息

操作场景

本章节指导您通过查询消息功能查看具体的消息内容,以及确定消息是否生产/消费成功。

分布式消息服务RocketMQ版提供三种消息查询的方法:按Topic查询、按Message ID查询和按Message Key查询。

  • 按Topic查询:查询某时间段内指定Topic下所有的消息。此方法属于范围查询,查询到的消息可能比较多。
  • 按Message ID查询:查询指定Message ID的消息。此方法属于精确查找,可以快速查询到某一条消息。
  • 按Message Key查询:查询指定Message Key的消息。此方法属于精确查找,可以快速查询到某一条消息。

消息清理机制

无论消息是否被消费,RocketMQ的消息保留时间为48小时,不支持修改。RocketMQ消息存储在CommitLog文件中,CommitLog文件大小为1GB,当一个CommitLog文件写满后,会生成一个新的CommitLog文件。RocketMQ删除消息是删除CommitLog文件,而不是删除一条消息。CommitLog文件为顺序写入,当最后写入的一条消息过期时,表示CommitLog文件过期。满足如下任意一个条件,CommitLog文件将会被清理:

  • 每天凌晨4点会清理过期的文件,部分老实例由于未设置时区,清理时间为每天中午12点。
  • 当磁盘使用率达到70%时,会立刻清理过期的文件。
  • 当磁盘使用率达到85%时,会从最早创建的文件开始清理,不管文件是否已过期,直到磁盘空间充足。

前提条件

  • 已创建RocketMQ实例和Topic。
  • 如果通过按Message ID查询,需要提前获取消息所在的Topic名称和消息的Message ID。
  • 如果通过按Message Key查询,需要提前获取消息所在的Topic名称和消息的Message Key。
  • 查询消息轨迹前,请先开启消息轨迹

查询消息内容

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择RocketMQ实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用服务 > 分布式消息服务RocketMQ版”,进入分布式消息服务RocketMQ专享版页面。
  4. 单击RocketMQ实例的名称,进入实例详情页面。
  5. 在左侧导航栏,单击“消息查询”,进入“消息查询”页面。
  6. 选择以下任意一种方法,查询消息。

    • 按Topic查询:“Topic”选择待查询消息的Topic名称,“队列”选择待查询消息的队列,“存储时间”选择待查询消息的时间段,单击“查询”。
    • 按Message ID查询:“Topic”选择待查询消息所在的Topic名称,“Message ID”输入待查询消息的Message ID,单击“查询”。
    • 按Message Key查询:“Topic”选择待查询消息所在的Topic名称,“Message Key”输入待查询消息的Message Key,单击“查询”。

  7. 在待查询消息所在行,单击“查看详情”,查看消息的具体内容。

    消息体大于4096字节时,在控制台无法显示所有的内容,单击“下载消息”,在下载的JSON文件中查看消息体。

查询消息轨迹

  1. 在待查询消息所在行,单击“消息轨迹”。
  2. 查看消息的轨迹,确定是否生产/消费成功。

    消息轨迹的参数说明如表1所示。

    表1 消息轨迹的参数说明

    参数

    参数说明

    生产者状态

    生产者状态如下:

    • 发送成功:消息发送成功,服务端已经成功存储消息。
    • 提交成功:允许消费者消费此事务消息。
    • 回滚:事务消息将被丢弃,不允许消费者消费此事务消息。
    • 未知,待确认:事务消息状态暂时无法确定,等待固定时间后,服务端向生产者进行消息回查。

    生产耗时

    生产者发送消息的耗时。

    生产地址

    生产者的IP地址和端口号。

    消费者状态

    消费者状态如下:

    • 消费成功
    • 消费超时
    • 消费异常
    • 消费返回NULL
    • 消费失败

    消费时间

    消费消息的时间。

    消费耗时

    消费者消费消息的耗时。

    消费地址

    消费者的IP地址和端口号。