978
阿里云
消息查询__控制台使用指南_消息队列 MQ-阿里云
MQ 控制台提供几种消息查询方式用于问题排查。
适用场景
MQ 提供了三种消息查询的方式,分别是根据 Messag ID,Message Key 以及 Topic 查询。三种方式的特点和对比如下。
查询方式 | 查询条件 | 查询类别 | 说明 |
---|---|---|---|
Message ID 查询 | Topic+Message ID | 精确查询 | 根据 Message ID 可以精确定位任意一条消息,获取消息的属性 |
Message Key 查询 | Topic+Message Key | 模糊查询 | 根据 Message Key 可以匹配到包含指定 Key 的最近 64 条消息,建议消息生产方为每条消息设置尽可能唯一的 Key,以确保相同的 Key 的消息不会超过 64 条,否则消息会漏查 |
Topic 查询 | Topic+时间段 | 范围查询 | 根据 Topic 和时间范围,批量获取符合条件的所有消息,查询量大,不易匹配 |
建议查询过程:
根据 Message ID 查询
根据 Message ID 查询消息属于精确查询,用户输入 Message ID 信息即可精确查询到任意一条消息。因此,为了尽可能精确地查询,建议发送方调用 Producer 发送消息时,在发送消息成功后将 Message ID 信息打印到日志中,方便问题排查。
以 Java SDK 为例,获取 Message ID 的方法如下:
SendResult sendResult = producer.send(msg);
String msgId = sendResult.getMessageId();
查询结果说明
查询到消息后,您可以在消息详情页面看到每条消息的基本属性,消息体下载链接以及消息的消费状态,如下图所示:
其中,投递状态是 MQ 根据各个 Consumer ID 的消费进度计算出的结果,投递状态的信息参考以下表格。
注意:投递状态仅仅是根据消费进度估算的结果,如果需要详细的消费信息,请使用消息轨迹工具查询。消息轨迹可以展示该条消息的完整链路,具体请参见查询消息轨迹。
投递状态表
投递状态 | 可能的原因 |
---|---|
已订阅,并且消息已被消费 | 该订阅组已经正常消费过这条消息 |
已订阅,但消息被过滤表达式过滤,请查看 Tag | 该消息的 Tag 不符合消费方的订阅关系,消息被过滤,可以在控制台>订阅管理>消费者状态查询菜单查询订阅方的订阅关系 |
已订阅,但消息未被消费 | 该订阅组订阅了该消息,但还未消费,有可能是消费过慢,或者消费出现异常导致阻塞 |
已订阅,但是订阅组当前不在线 | 该订阅组订阅了该消息,但是不在线,请检查消费者端应用不在线的原因 |
未知异常 | 出现未收录异常,可以进工单系统提工单解决 |
消费验证
MQ提供了消费验证功能,该功能可以将指定消息推送给指定的在线客户端,以检测客户端消费该消息的逻辑和结果是否符合预期。
注意:消费验证功能仅仅是用于验证客户端的消费逻辑是否正常,并不会影响正常的收消息流程,因此消息的消费状态等信息在点击消费验证后并不会改变。
根据 Message Key 查询
Message Key 查询消息的原理是,MQ 根据用户设置的 Message Key 信息建立消息的索引信息,当用户输入 Key 进行查询时,根据该索引即可匹配相关的消息返回。
注意:
- Message Key 查询条件是用户设置的 Message Key 属性。
- Message Key 查询仅仅返回符合条件的最近的 64 条消息,因此建议业务方设置 Key 时尽可能唯一,并具有业务区分度。
设置 Message Key 的方法:
Message msg = new Message("Topic","*","Hello MQ".getBytes());
/**
* 对每条消息设置其检索的Key,该Key值设置代表消息的业务关键属性,请尽可能全局唯一。
* 以方便您在无法正常收到消息情况下,可通过MQ控制台查询消息。不设置也不会影响消息正常收发
*/
msg.setKey("TestKey"+System.currentTimeMillis());
查询样例如下图所示:
根据 Topic 查询
根据 Topic 查询一般用在前两种查询条件都无法获得的情况下,根据 Topic 和消息的发送时间范围,批量获取该时间范围内的所有消息,然后再找到关心的数据。
注意:
- Topic 查询属于范围查询,获取 Topic 下符合时间条件的所有消息,消息量大,建议尽量缩短查询区间。
- Topic 查询数据量大,采用分页展示。
查询样例如下图所示:
最后更新:2016-11-23 16:04:04
上一篇:
发布订阅管理__控制台使用指南_消息队列 MQ-阿里云
下一篇:
MQTT 管理__控制台使用指南_消息队列 MQ-阿里云
休闲娱乐_阿里云帮助中心-阿里云,领先的云计算服务提供商
设备认证相关问题__产品常见问题_阿里云物联网套件-阿里云
VPC创建vswitch提示Specified CIDR block overlapped with other subnets__异常处理_用户指南_专有网络 VPC-阿里云
返回值为空__错误说明_API 网关-阿里云
设置拖拽播放__配置操作接口_API 手册_CDN-阿里云
Dubbo 标签兼容能力__EDAS 中的 Dubbo 开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
如何添加RDS IP白名单__常见问题_产品使用问题_数据集成-阿里云
scale__服务编排文档_用户指南_容器服务-阿里云
管理生命周期__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云
归档存储数据获取为什么需要等待__数据操作常见问题_产品使用问题_归档存储-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云