消息查询

如遇消息消费有问题,则可通过查询具体发送的消息内容来排查问题。SOFAStack 消息队列提供了三种消息查询的方式,分别是按 Message ID、Message Key 以及 Topic 查询。

操作步骤

  1. 登录 SOFAStack 控制台

  2. 在左侧导航栏,选择 中间件 > 消息队列 > 消息查询

  3. 消息查询 页面,您可单击以下任一页签,然后按页面提示输入相应信息。

    • 按 Message ID 查询:Message ID 是由服务端生成的 32 位字符串,用于标识一条消息。按 Message ID 查询,即根据 Topic 和 Message ID,精确定位任意一条消息,获取消息的属性。建议在发送消息成功后将 Message ID 信息打印到日志中,方便问题排查。获取 Message ID 的方法如下:

      SendResult sendResult = producer.send(msg);
      String msgId = sendResult.getMessageId();
    • 按 Message Key 查询:Message Key 指发送消息时,设置到消息对象中的 Key 字段,消息队列根据您设置的 Message Key 建立消息的索引信息。按 Message Key 查询,即根据 Topic 和 Message Key,匹配到包含指定 Key 的最近 64 条消息。设置 Message Key 的方法如下:

      Message msg =new Message("Topic","*","Hello MQ".getBytes());
      //Key 值代表消息的业务关键属性,请尽可能全局唯一。
      msg.setKey("TestKey"+System.currentTimeMillis());
    • 按 Topic 查询:即根据 Topic 和消息的发送时间范围,批量获取该时间范围内的所有消息,查询量大,不易匹配,一般用在 Message ID 和 Message Key 都无法获得的情况下。

  4. 信息输入完毕后,单击 搜索

消息查询 页面,您可以查看到所有查询到的消息及其概览信息,包括 Message ID、Tag、Key 和存储时间。您还可以 查询消息轨迹 以及查看消息详情。

单元化说明

在 LDC 单元化架构环境下,可以自由切换单元,在指定单元内进行消息查询,如下图所示。消息查询