删除消息
目前来看,只有使用mqadmin 的resetOffsetByTime命令,需要注意,-s指定的时间戳是毫秒。给-s指定一个较大的时间戳,比如当前时间,就能清空队列消息,比如
./mqadmin resetOffsetByTime -n localhost:9876 -s 1732017084000 -t TopicTest -g please_rename_unique_group_name_4
然后查看 ./mqadmin consumerProgress -n localhost:9876
删除消息,试了使用 mqadmin 的 consumeMessage命令,还指定 -g 都不行,比如
./mqadmin consumeMessage -n localhost:9876 -t TopicTest -g please_rename_unique_group_name_4 -b broker-a
查看结果仍然不为零
mqadmin statsAll 这个命令貌似也能看到消息堆积量,以后再测
查看消息内容
./mqadmin printMsg -n localhost:9876 -t benchmark-queue-delay
对于延时消息,只有到期的才能看到。 结果举例:
minOffset=0, maxOffset=11, MessageQueue [topic=benchmark-queue-delay, brokerName=broker-a, queueId=2]
maxOffset 表示下一个消息在本队列的序号。
消息详情如下:
MSGID: 0A0A6403BE1C00000000376c1c400002 MessageExt [brokerName=broker-a, queueId=2, storeSize=445, queueOffset=0, sysFlag=0, bornTimestamp=1733912232727, bornHost=/192.200.206.110:36616, storeTimestamp=1733912243067, storeHost=/192.200.206.110:10911, msgId=C0C8CE6E00002A9F00000000001DACDE, commitLogOffset=1944798, bodyCRC=2089013610, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='benchmark-queue-delay', flag=0, properties={TIMER_OUT_MS=1733912242000, MSG_REGION=DefaultRegion, TIMER_DELIVER_MS=1733912242727, UNIQ_KEY=0A0A6403BE1C00000000376c1c400002, CLUSTER=DefaultCluster, TIMER_ENQUEUE_MS=1733912232000, MIN_OFFSET=0, TRACE_ON=true, TIMER_DEQUEUE_MS=1733912243067, REAL_TOPIC=benchmark-queue-delay, MAX_OFFSET=11, REAL_QID=2}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 71, 111, 32, 67, 108, 105, 101, 110, 116, 33, 32, 49, 32, 116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 49, 55, 51, 51, 57, 49, 50, 50, 51, 50, 32, 100, 101, 108, 97, 121, 73, 110, 116, 101, 114, 118, 97, 108, 58, 49, 48], transactionId='null'}] BODY: Hello RocketMQ Go Client! 1 timestamp:1733912232 delayInterval:10
对于展示结果中的 queueOffset 字段,标记了该条消息在本队列的偏移量,queueOffset编号从0开始。
队列的maxOffset值等于当前队列保存的消息的最大queueOffset+1
消费进度 查看队列消息个数
使用
./mqadmin consumerProgress -n localhost:9876
如果没有消费者
http://chn520.cn/article_detail/1659505584124182
./mqadmin consumerProgress -n localhost:9876 -g cg_benchmark-queue-delay
结果解析:
#Topic #Broker Name #QID #Broker Offset #Consumer Offset #Diff #Inflight #LastTime
benchmark-queue-delay broker-a 1 19 19 0 0 2024-12-11 18:33:34
benchmark-queue-delay broker-a 2 11 11 0 0 2024-12-11 18:33:34
benchmark-queue-delay broker-a 3 0 0 0 0 N/A
其中 #Broker Offset 是broker侧保存的消息最大偏移量+1,#Consumer Offset是消费侧已消费消息的最大偏移量+1。
#Broker Offset 的值=使用printMsg命令结果的队列的maxOffset。
#Diff 是积压的消息数
查看延时消息
目前rocketmq仅支持查看使用延时等级发送的延时消息,不支持查看使用任意时长发布的延时消息。
./mqadmin printMsg -n localhost:9876 -t SCHEDULE_TOPIC_XXXX
// 这种方式发送的延时消息,会首先进入topic名为"SCHEDULE_TOPIC_XXXX" 的队列
msg.WithDelayTimeLevel(delayInterval)
// 这种方式发送的延时消息到期前无法查看
msg.WithDelayTimestamp(time.Now().Add(time.Duration(delayInterval) * time.Second))
SCHEDULE_TOPIC_XXXX 队列的queueId编号==延迟等级-1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。