云消息队列 RocketMQ 版提供了三种消息查询的方式,分别是按Message ID、Message Key以及Topic查询。您可以通过消息查询验证消息是否发送成功、验证消息发送的内容是否正确、以及进一步查看消息的轨迹信息。
查询方式说明
云消息队列 RocketMQ 版提供三种查询方式,各自的特点和对比如下表所述。
查询方式 | 查询条件 | 查询类别 | 说明 |
查询方式 | 查询条件 | 查询类别 | 说明 |
按Message ID查询 | Topic+Message ID | 精确查询 | 根据Topic和Message ID可以精确定位任意一条消息,获取消息的属性。 |
按Message Key查询 | Topic+Message Key | 模糊查询 | 根据Topic和Message Key可以匹配到包含指定Key的最近64条消息。 |
按Topic查询 | Topic+时间段 | 范围查询 | 根据Topic和时间范围,批量获取符合条件的所有消息,查询量大,不易匹配。 |
推荐查询过程
推荐按照以下流程查询消息。
操作步骤
登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表。
在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
在左侧导航栏,单击消息查询。
在消息查询页面,您可选择以下任意一种查询方式,然后按页面提示输入相应信息,再单击查询。
按 Message ID 查询
按Message ID查询消息属于精确查询,您输入Topic和Message ID即可精确查询到任意一条消息。因此,为了尽可能精确地查询,建议在发送消息成功后将Message ID信息打印到日志中,方便问题排查。
以Java SDK为例,获取Message ID的方法如下。
SendResult sendResult = producer.send(msg); String msgId = sendResult.getMessageId();
其他语言可参见SDK参考概述。
按 Message Key 查询
云消息队列 RocketMQ 版根据您设置的Message Key建立消息的索引信息,当您输入Key进行查询时,云消息队列 RocketMQ 版根据该索引即可匹配相关的消息返回。
按Message Key查询的条件是您在发送消息时已设置Message Key属性。
按Message Key查询仅返回符合条件的最近的64条消息,因此建议您尽可能保证设置的Key是唯一的,并具有业务区分度。
设置Message Key的方法如下。
Message msg = new Message("Topic","*","Hello MQ".getBytes()); /** * 对每条消息设置其检索的Key,该Key值代表消息的业务关键属性,请尽可能全局唯一。 * 以方便您在无法正常收到消息情况下,可通过消息队列RocketMQ版控制台查询消息。不设置也不会影响消息正常收发。 */ msg.setKey("TestKey"+System.currentTimeMillis());
按 Topic 查询
按Topic查询一般用在Message ID和Message Key都无法获得的情况下,根据Topic和消息的发送时间范围,批量获取该时间范围内的所有消息,然后再找到关心的数据。
按Topic查询属于范围查询,获取Topic下符合时间条件的所有消息,消息量大,建议尽量缩短查询区间。
按Topic查询消息量大,采用分页展示。
查询结果说明
查询的结果中包含了Message ID、Tag、Key等信息,同时支持消息轨迹查询、消费验证及下载消息。
下载消息
在查询结果的列表中,找到目标消息,在其操作列选择
。消费验证
云消息队列 RocketMQ 版提供了消费验证功能,该功能可以将指定消息推送给指定的在线客户端,以检测客户端消费该消息的逻辑和结果是否符合预期。
在查询结果的列表中,找到目标消息,然后单击其操作列的消费验证。
在验证消费面板,选择需要验证的Group ID和客户端 ID,然后单击确定。
相关文档
您可以根据消息查询结果进一步查看消息的轨迹信息,查看消息的消费状态和消费结果。具体操作,请参见消息轨迹。
- 本页导读 (1)
- 查询方式说明
- 推荐查询过程
- 操作步骤
- 查询结果说明
- 下载消息
- 消费验证
- 相关文档