删除消息

目前来看,只有使用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
image.png

删除消息,试了使用 mqadmin 的 consumeMessage命令,还指定 -g 都不行,比如
./mqadmin consumeMessage -n localhost:9876 -t TopicTest -g please_rename_unique_group_name_4 -b broker-a
查看结果仍然不为零
image.png

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

如果没有消费者
image.png

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


英雄之旅
8 声望1 粉丝