RocketMQ 使用注意事项
场景:
最近公司项目要用Rocket MQ,但是之前我没用过。所以在使用过程中遇到一些问题,做个记录。这篇主要是将注意事项,不涉及底层实现原理(还没学透)。
而且这里用的RocketMQ是指Apache的4.X,不是阿里云的,注意两者的不同。
解决:
1.保持订阅关系一致:订阅关系一致指的是同一消费者组下所有消费者订阅的topic、tag必须完全一致,不然就会出现消费混乱。(看参考的第一篇官方文档有详细介绍,阿里云的RocketMQ是支持订阅统一topic,不同tag的)
2.RocketMQ 控制台上创建Topic时,要保持读、写队列一致。比如,读8个,写4个。则会创建8个队列,0-7可以读,但只有0-3可以写。只要读写不一致,就可能会出现消费问题。
之所以这么设计,是为了方便扩容或者缩容时,不会造成消息丢失。
3.Onmessage中进行消息消费时,如果出现RuntimeException类的异常(比如空指针异常等,就是这个类型的异常),会导致消费失败。这个消息会进入重试阶段,默认重试16次,还是无法消费就会进入死信队列。
参考:
官方文档: https://rocketmq.apache.org/zh/docs/4.x/bestPractice/07subscribe/
https://blog.csdn.net/qian_348840260/article/details/108975241
https://zhuanlan.zhihu.com/p/290886627
https://blog.csdn.net/weixin_35973945/article/details/118298429