如遇某个时刻的消息消费有问题,您可通过按时间查询的方式查询这个时刻具体发送了哪些消息以及这些消息的内容。消息队列Kafka版控制台提供按位点查询和按时间查询,帮助您排查问题。

背景信息

您可根据具体情况按以下推荐方式查询消息:

  • 如果您可通过查询日志来获取消息发送至Topic的分区ID以及消息位点,则推荐您使用按位点查询
  • 如果您不确定消息的位置,但确定消息发送的时间,则推荐您使用按时间查询

注意事项

  • 查询到的每条消息在控制台上最多显示1 KB的内容,超过1 KB的部分将自动截断。如需查看完整的消息内容,请下载相应的消息。

    目前,仅专业版实例支持下载,且下载的消息最大为10 MB。

  • 标准版实例最多查询到256 KB的消息、显示10条消息。
    • 如果10条消息的大小已经超过256 KB,那么控制台上只显示256 KB以内的内容。
    • 如果10条消息的大小还不到256 KB,在控制台上最多也只能看到10条消息。在这样的情况下,请以客户端的实际消费为准。
  • 专业版实例最多查询到10 MB的消息、显示30条消息。
    • 如果30条消息的大小已经超过10 MB,那么控制台上只显示10 MB以内的内容。
    • 如果30条消息的大小还不到10 MB,在控制台上最多也只能看到30条消息。在这样的情况下,请以客户端的实际消费为准。

    实例版本详情请参见计费说明

  • 所能查询的结果与消息队列Kafka版的消息清除策略相关,清除策略如下:
    • 清除超过存储时长的消息,但会保留至少一个存储文件。例如,消息存储时长为72小时,那超过72小时的消息都会被清除,但会剩下最后一个存储文件,即使这里面的消息都超过72小时,仍可被查询。
    • 如果总的消息大小超过消息存储磁盘85%的使用率,则会从最早的消息开始清除,直至磁盘使用率降到85%以下。

按位点查询

消息队列Kafka版中的一个位点指向一条消息,在确定需要查询的消息所在位置的情况下,可以指定位点查询相应的消息。

  1. 登录消息队列Kafka版控制台
  2. 在顶部菜单栏,选择目标地域。
  3. 在左侧导航栏,单击消息查询
  4. 消息查询页面,选择需查询的实例,并单击按位点查询页签。
  5. 输入需查询的Topic名称,选择需查询的分区,按提示输入位点,然后单击搜索

    按位点查询页签中展示该查询位点及以后连续的消息。如下图所示,指定的分区和位点都为“5”,那么返回的结果从位点“5”开始。

    querybyoffset
    参数 描述
    分区 消息的Topic分区。
    位点 消息的消费位点。
    TimeStamp 发送消息时,客户端自带的或是您指定的ProducerRecord中的timestamp
    说明
    • 如果配置了该字段,则按配置值显示。
    • 如果未配置该字段,则默认取消息发送时的系统时间。
    • 如果显示值为“1970/x/x x:x:x”,则说明发送时间配置为“0”或其他有误的值。
    • 0.9及以前版本的Kafka客户端不支持设置该时间。
  6. (可选)单击操作列下的消息详情
    参数 描述
    Key 消息Key/Value序列化后的大小,取值为ConsumerRecord中的serializedKeySize/serializedValueSize
    Value 查询到的消息的具体内容(已强制转换为String类型)。
  7. 仅适用于专业版实例:单击Key或Value右侧的下载消息
    说明 下载的消息最大为10 MB,超过10 MB的部分将不显示。

按时间查询

按时间查询允许查询全部分区的消息,不确定消息的位置,但确定消息发送的时间段,请指定该时间段中的某一个时间点查询该时间点附近的消息。

  1. 登录消息队列Kafka版控制台
  2. 在顶部导航栏,选择目标地域。
  3. 在左侧导航栏,单击消息查询
  4. 消息查询页面,选择需查询的实例,并单击按时间查询页签。
  5. 输入需查询的Topic名称,选择需查询的分区,选择需查询的时间点,然后单击搜索

    按时间查询页签即可看到搜索结果,分区的取值会影响搜索显示结果:

    • 如果选择全部,则显示全部分区。querybytimeall
    • 如果指定分区,则显示指定分区。querybytimespecified
    参数 描述
    分区 消息的Topic分区。
    • 如果选择指定分区,则显示指定分区。
    • 如果选择全部,随机显示实例下的分区。
    位点 消息的消费位点。
    TimeStamp 发送消息时,客户端自带的或是您指定的ProducerRecord中的timestamp
    说明
    • 如果配置了该字段,则按配置值显示。
    • 如果未配置该字段,则默认取消息发送时的系统时间。
    • 如果显示值为“1970/x/x x:x:x”,则说明发送时间配置为“0”或其他有误的值。
    • 0.9及以前版本的Kafka客户端不支持设置该时间。
  6. (可选)单击操作列下的消息详情
    参数 描述
    Key 消息Key/Value序列化后的大小,取值为ConsumerRecord中的serializedKeySize/serializedValueSize
    Value 查询到的消息的具体内容(已强制转换为String类型)。
  7. 仅适用于专业版实例:单击Key或Value右侧的下载消息
    说明 下载的消息的最大大小为10 MB,超过10 MB的部分将不显示。