# 查看RocketMQ消息
RocketMQ提供了三种消息查询的方式，分别是按Topic、Message ID以及Message Key查询。您可以通过消息查询验证消息是否已成功发送和消费，验证消息发送的内容是否正确，以及进一步查看消息的轨迹信息。
#### 消息清理机制
无论消息是否被消费，RocketMQ的消息默认保留时间为48小时，最长保留时间为720小时，修改保留时间的操作请参见[修改RocketMQ消息保留时间](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-059.html)。RocketMQ消息存储在CommitLog文件中，CommitLog文件大小为1GB，当一个CommitLog文件写满后，会生成一个新的CommitLog文件。RocketMQ删除消息是删除CommitLog文件，而不是删除一条消息。CommitLog文件为顺序写入，当最后写入的一条消息过期时，表示CommitLog文件过期。满足如下任意一个条件，CommitLog文件将会被清理：
- 每天凌晨4点会清理过期的文件，部分老实例由于未设置时区，清理时间为每天中午12点。
- 当磁盘使用率达到70%（针对4.8.0版本）或75%（针对5.x版本）时，会立刻清理过期的文件。
- 当磁盘使用率达到85%时，会从最早创建的文件开始清理，不管文件是否已过期，直到磁盘空间充足。
 
#### 前提条件
- 已创建RocketMQ实例和Topic。
- 已使用客户端连接RocketMQ生产和消费消息，具体请参见[使用客户端连接RocketMQ（关闭SSL）](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-039.html)、[使用客户端连接RocketMQ（开启SSL）](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-040.html)或[使用控制台连接RocketMQ](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-049.html)。
- 如果通过按Message ID查询，需要提前获取消息所在的Topic名称和消息的Message ID。 Message ID为生产消息后返回的MsgId，如[6](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-039.html#hrm-ug-039__zh-cn_topic_0143117204_li54957760)中返回的内容，也可先通过Topic查询消息，记录Message ID。
  
- 如果通过按Message Key查询，需要提前获取消息所在的Topic名称和消息的Message Key。 Message Key为[5](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-049.html#hrm-ug-049__li0177144134310)中配置的消息Key，也可先通过Topic查询消息，记录Message Key。
  
 
#### 查询方式说明
三种查询方式的特点和对比如[表1]所述。
 表1消息查询方式说明 
| **查询方式**        | **查询条件**          | **查询类别** | **说明**                                                                                                               |
|:---|:---|:---|:---|
| 按Topic查询         | Topic+时间段        | 范围查询     | 根据Topic和时间范围，批量获取符合条件的所有消息，查询量大，不易匹配。                                                                               |
| 按Message ID查询 | Topic+Message ID  | 精确查询   | 根据Topic和Message ID可以精确定位任意一条消息，获取消息的属性。                                                                             |
| 按Message Key查询 | Topic+Message Key | 模糊查询  | 根据Topic和Message Key可以匹配到包含指定Key的消息。 建议消息生产方为每条消息设置尽可能唯一的Key，以确保相同的Key的消息不会超过64条，否则消息会漏查。 |
   
#### 推荐查询过程
推荐按照以下流程查询消息。
图1查询消息流程   
![](https://support.huaweicloud.com/usermanual-hrm/zh-cn_image_0000002550726846.png "点击放大")
#### 查询消息内容
1. 登录[RocketMQ实例控制台](https://console.huaweicloud.com/dms/?engine=reliability&locale=zh-cn#/queue/manager/instances)。
2. 单击RocketMQ实例的名称，进入实例概览页面。
3. 在左侧导航栏，单击"实例管理 \> 消息查询"，进入"消息查询"页面。
4. 选择以下任意一种方法，查询消息。 
   - 按Topic查询："Topic"选择待查询消息的Topic名称，"队列"选择待查询消息的队列（仅RocketMQ实例4.8.0版本需要选择），"存储时间"选择待查询消息的时间段，单击"查询"。
     图2按Topic查询消息   
     ![](https://support.huaweicloud.com/usermanual-hrm/zh-cn_image_0000002469129169.png "点击放大") 
   
   - 按Message ID查询："Topic"选择待查询消息所在的Topic名称，"Message ID"输入待查询消息的Message ID，单击"查询"。
     图3按Message ID查询消息   
     ![](https://support.huaweicloud.com/usermanual-hrm/zh-cn_image_0000002469325577.png "点击放大") 
   
   - 按Message Key查询："Topic"选择待查询消息所在的Topic名称，"Message Key"输入待查询消息的Message Key，单击"查询"。
     ![](https://support.huaweicloud.com/usermanual-hrm/public_sys-resources/caution_3.0-zh-cn.png)
     - 按Message Key查询的条件是您在生产消息时已设置Message Key属性，建议您尽可能保证设置的Message Key是唯一的。
     
     - 按Message Key查询时，不同版本和规格查到的最多消息条数会不同，可能会导致消息漏查。
      
     图4按Message Key查询消息   
     ![](https://support.huaweicloud.com/usermanual-hrm/zh-cn_image_0000002515088768.png "点击放大") 
   
   
   
   
5. 在待查询消息所在行，单击"查看详情"，查看消息的具体内容。 
   消息的具体内容包括消息大小、消息的生成时间以及消息的内容。
   图5查看消息详情   
   ![](https://support.huaweicloud.com/usermanual-hrm/zh-cn_image_0000002435665952.png "点击放大")
   - 消息体大于4096字节时，在控制台无法显示所有的内容，单击"下载消息"，在下载的JSON文件中查看消息体。
   
   - 单击"复制消息"可以复制消息的内容。
    
   
   
 
#### 导出消息内容
1. 登录[RocketMQ实例控制台](https://console.huaweicloud.com/dms/?engine=reliability&locale=zh-cn#/queue/manager/instances)。
2. 单击RocketMQ实例的名称，进入实例概览页面。
3. 在左侧导航栏，单击"实例管理 \> 消息查询"，进入"消息查询"页面。
4. 查询出消息后，通过以下任意一种方法，导出消息列表。 
   - 勾选待导出的消息数据，单击"导出 \> 导出已选中数据到XLSX"，导出指定消息列表。
   
   - 单击"导出 \> 导出本页数据到XLSX"，导出本页消息列表。 一页最多可显示200条消息数据。
     
   
   
   
   
 
#### 相关文档
- 消息的查询也可以通过调用API完成，具体请参见[查询消息](https://support.huaweicloud.com/api-hrm/ListMessages.html)。
- 您可以根据消息查询结果进一步查看消息的轨迹信息，查看消息的发送状态和消费结果，具体请参见[查询消息轨迹](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-028.html#section3)。
- 当消费结果不为"消费成功"时，您可以将消息重新发送到指定的在线客户端，验证下消费者能否收到消息，具体请参见[验证RocketMQ消息消费](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-050.html)。
 
