RocketMQ使用教程

之前一直用的是kafka,新公司使用的是RocketMQ,之前没接触过RocketMQ,导致告警出现消息积压,不知怎么去排查问题,趁着这次排查问题,顺便熟悉了下RocketMQ的操作。

先来熟悉下RocketMQ的控制台可视化界面:

使用教程

可视化界面

更改后如下:

主题(Topic)

1、假如说生产者发送了10条消息,此时消费者服务没有启动,因此就无法被消费,那么此时的积压的10条消息在哪看呢?

2、点击主题(Topic),找到我们发消息时的Topic,然后点击CONSUMER管理选项

如下:

3、生产者发送10条消息,看下上面的差值会有什么变化

上图可看出消息积压的数量

4、如果消息消费失败,可以重置消费位点:

5、 如果消息不重要,可以跳过消息积压:

消息(Message)

1、 接下来,如何才能看出一条消息是否被消费呢?

2、进入消息

3、选择对应的topic,进行搜索

4、选择一条消息,点击MESSAGE DETAIL,进入之后往下拉,如下:

通过trackType可以看出是否被消费

1
2
3
4
5
NOT_ONLINE  代表该Consumer没有运行
CONSUMED 代表该消息已经被消费
NOT_CONSUME_YET 还没被消费
UNKNOW_EXCEPTION 报错
CONSUMED_BUT_FILTERED 消费了,但是被过滤了,一般是被tag过滤了

而上图中trackType的值为NOT_ONLINE,说明消费者没有运行,也就是未被消费

问题排查

告警群出现告警,有消息积压:

到Grafana查看,发现确实有消息积压:

到RocketMQ控制台查看消息消费情况,发现告警的消费组不在线:

导致消息积压:

到消费者查询这个群组查不到:

研发告知创建了新的消费者群组,旧的没用就删掉了,但是没删掉对应群组的重试,死信主题:

所以导致了消息积压:

把对应消费组的重试主题删除后,再查看,发现消息积压没了:

总结:

重试主题会在消费组消费失败时自动创建(死信主题需手动创建),当消息在重试主题中达到最大重试次数仍失败时,RocketMQ 会将消息转移到死信主题,防止消息无限循环重试。旧的消费组不使用了,需要删除的时候,记得查询一下是否有对应的重试,死信主题,把对应的重试,死信主题也删掉。

Thank you for your accept. mua!
-------------本文结束感谢您的阅读-------------