概述

在生产环境中若消息收发不符合预期时,可通过查询消息轨迹,找到消息的实际收发状态,快速诊断问题。若您的消息已从生产者发送,在消息队列RocketMQ版控制台中,创建消息轨迹查询任务后,却查询不到消息轨迹,可参考本文进行排查并定位问题。

详细信息

若您通过Message ID、Message Key或Topic的查询方式,查询不到相关的消息轨迹,可通过下列步骤排查并定位问题:

步骤一:检查SDK版本是否支持消息轨迹功能

请先检查您使用的SDK版本是否支持消息轨迹功能。不同协议对应的SDK版本功能不一致,请根据您实际使用的协议进行查询,详情如下:

支持的协议类型 TCP协议 HTTP协议

不同协议使用的查询方式

 

支持通过Message ID、Message Key或Topic的时间范围查询相关的消息轨迹。

说明:更多详情,请参见调用TCP协议的SDK收发普通消息

仅支持通过Message ID查询相关的消息轨迹。

说明:更多详情,请参见调用HTTP协议的SDK收发普通消息

不同协议对应的SDK版本
  • Java SDK支持v1.2.7及以上版本。
  • C/C++ SDK支持v1.1.2及以上版本。
  • .NET SDK支持v1.1.2及以上版本。

除Node.js SDK需为v1.0.2及以上版本外,其余语言的SDK均需为v1.0.1及以上版本。详情请参见消息队列RocketMQ版HTTP SDK库

步骤二:检查输入的查询条件是否正确

不同的查询方式所对应的查询条件不同,确认您使用的查询方式,输入的查询条件是否正确。若输入的查询条件错误,请修改为正确的查询条件,具体说明如下:

查询方式 查询条件 查询类别 说明
按Message ID查询 Topic+Message ID 精确查询 根据Topic和Message ID可以精确定位任意一条消息,获取消息的属性。
按Message Key查询 Topic+Message Key 模糊查询

根据Topic和Message Key可以匹配到包含指定Key的最近64条消息。

注意:建议消息生产方为每条消息设置尽可能唯一的Key,以确保相同的Key的消息不会超过64条,否则消息会漏查。

按Topic查询 Topic+时间段 范围查询 根据Topic和时间范围,批量获取符合条件的所有消息,查询量大,不易匹配。

步骤三:检查查询时间范围是否准确

为了提高查询速度,需要您输入消息的发送时间范围。请确认您输入的查询时间是否准确,如果查询不到消息轨迹,请将时间范围扩大至近3天。若仍然查询不到消息轨迹,请确认消息存储时间是否已超过3天,默认消息存储的时间为3天。

 

若不属于上述情况中的问题,且无法查询到消息轨迹,请提交工单获取技术支持,并附带日志文件,日志文件位于/home/[$USER]/logs/ons.log

说明:[$USER]为用户目录,现场以实际环境为准。

相关文档

适用于

  • 消息队列RocketMQ版