微服务 教程
1085个小节阅读:195.8k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在实际开发中,经常需要查看MQ中消息的内容来排查问题。RocketMQ提供了三种消息查询的方式,分别是按Message ID、Message Key以及Unique Key查询。
xxxxxxxxxx
//返回结果
SendResult [
sendStatus=SEND_OK,
msgId=C0A801030D4B18B4AAC247DE4A0D0000,
offsetMsgId=C0A8010300002A9F000000000007BEE9,
messageQueue=MessageQueue [topic=TopicA, brokerName=broker-a, queueId=0],
queueOffset=0]
按MessageId查询消息
Message Id 是消息发送后,在Broker端生成的,其包含了Broker的地址、偏移信息,并且会把Message Id作为结果的一部分返回。Message Id中属于精确匹配,代表唯一一条消息,查询效率更高。
按照Message Key查询消息
消息的key是开发人员在发送消息之前自行指定的,通常把具有业务含义,区分度高的字段作为消息的key,如用户id,订单id等。
按照Unique Key查询消息
除了开发人员指定的消息key,生产者在发送发送消息之前,会自动生成一个UNIQ_KEY,设置到消息的属性中,从逻辑上唯一代表一条消息。
消息在消息队列RocketMQ中存储的时间默认为3天(不建议修改),即只能查询从消息发送时间算起3天内的消息,三种查询方式的特点和对比如下表所述:
查询方式 | 查询条件 | 查询类别 | 说明 |
---|---|---|---|
按Message ID | Message ID | 精确查询 | 根据Message ID可以精确定位任意一条消息, 获取消息的属性。 |
按Message Key | Topic+Message Key | 模糊查询 | 根据Topic和Message Key可以匹配到包含指定Key 的最近64条消息。注意 建议消息生产方为每条消息 设置尽可能唯一的Key,以确保相同的Key的消息不 会超过64条,否则消息会漏查。 |
按Unique Key | Unique Key | 精确查询 | 与Message Id类似,匹配唯一一条消息, 如果生产端重复发送消息,则有可能匹配多条,但它们的unique key是唯一的。 |
实时效果反馈
1.消息查询的方式有哪些?
A 按message ID查询
B 按message Key查询
C 按unique Key查询
D 以上都是
答案
1=>D