全部产品
云市场

消息查询

更新时间:2020-04-01 10:51:47

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

操作步骤

  1. 进入SOFAStack 消息队列控制台页面,在左侧导航栏,选择 消息查询
  2. 消息查询 页面,您可点击以下任一页签,然后按页面提示输入相应信息。
    • 按 Message ID 查询:Message ID 是由发送方 Send 方法返回的 32 位 Hex 字符串。按 Message ID 查询,即根据 Topic 和 Message ID,精确定位任意一条消息,获取消息的属性。建议在发送消息成功后将 Message ID 信息打印到日志中,方便问题排查。
      获取 Message ID 的方法如下:
      1. SendResult sendResult = producer.send(msg);
      2. String msgId = sendResult.getMessageId();
    • 按 Message Key 查询:Message Key 指发送消息时,设置到消息对象中的 Key 字段,消息队列根据您设置的 Message Key 建立消息的索引信息。按 Message Key 查询,即根据 Topic 和 Message Key,匹配到包含指定 Key 的最近 64 条消息。
      设置 Message Key 的方法如下:
      1. Message msg = new Message("Topic","*","Hello MQ".getBytes());
      2. //Key 值代表消息的业务关键属性,请尽可能全局唯一。
      3. msg.setKey("TestKey"+System.currentTimeMillis());
    • 按 Topic 查询:即根据 Topic 和消息的发送时间范围,批量获取该时间范围内的所有消息,查询量大,不易匹配,一般用在 Message ID 和 Message Key 都无法获得的情况下。
  3. 信息输入完毕后,点击 搜索 按钮,即可查询消息。

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

在消息详情页,您可以查看到投递状态。投递状态是消息队列根据各个 Group ID 的消费进度计算出的结果。

说明:投递状态仅仅是根据消费进度估算的结果,如果需要详细的消费信息,请使用消息轨迹查询。详见 查询消息轨迹

投递状态 说明
已订阅,并且消息至少已被消费一次 该 Group ID 已经正常消费过这条消息。
已订阅,但消息被过滤表达式过滤,请查看 Tag 该消息的 Tag 不符合消费方的订阅关系,消息被过滤,即未被消费。您可以进入控制台中的 Group 管理,然后单击该 Group ID 的列的消费者状态查询其订阅关系。
已订阅,但消息未被消费 该 Group ID 订阅了该消息,但还未消费。有可能是消费过慢,或者消费出现异常导致阻塞。
已订阅,但 Group ID 当前不在线,请通过消息轨迹功能进行精确查询 该 Group ID 订阅了该消息,但是不在线。请检查消费者端应用不在线的原因。
未知异常 出现未收录的异常情况。请 提交工单 进行解决。

单元化说明(仅专有云)

对于专有云开启了单元化功能的用户,在单元化部署环境下,可以自由切换单元,在指定单元内进行消息查询,如下图所示。

消息查询