RocketMQ 问题整理

问题1:有多个topic吗?有没有上限?

对于消息中间件rocketmq来说,可以存在多topic,无上限规定,实现对消息进行归类和隔离。随着Topic的增加对性能的影响较小,稳定性较好。

问题2:业务较多时,能用一个topic实现吗?如何区别不同业务?

业务较多时,可以使用一个topic,通过tags标签去区分不同的业务,代表一类消息。

问题3:怎么处理消息重复的问题?

造成消息重复的根本原因是网络不可达,只要通过网络交换数据,就无法避免该问题。Rocketmq不保证消息不重复,对于重复的消息处理问题,需要在业务端去重。例如通过redis记录已经消费成功的消息ID,如果有新到的消息ID已经存在,就不再处理该消息。

问题4:消息堆积数量可以设置吗?堆积消息后,怎么处理?

不可设置,取决于内存buffer大小,或读IO的吞吐量。

情况一:堆积在内存buffer中,堆积能力取决于内存buffer大小

情况二:堆积在持久化存储系统中,如DB,文件记录形式,读io的吞吐量决定堆积后的访问能力。

rocketmq特性之一具有亿级消息堆积能力。consumer可以通过处理消息堆积情况,例如:某个队列的消息数堆积到 100000 条以上,则尝试丢弃部分或全部消息,这样就可以快速追上发送消息的速度。

InsertPic_.jpg.pdf 

问题5:有没有出现消息丢失的情况?

当broker宕机的情况下,可能出现消息丢失,并且和broker集群模式有关。

例如

多master模式:单台机器重启或宕机期间,会有少量消息丢失,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性。

多Master多Slave模式:Master宕机或磁盘损坏时会有少量消息丢失

你可能感兴趣的:(mq)