RabbitMQ
1.RabbitMQ的消息堆积模式为内存(不是绝对的,当内存不足时会出现换页现象)。所以,在生产者发生消息至Exchange,Exchange根据规则将消息在复制到匹配的队列中,所以每个Queue拥有所有的消息。
2.Exchange/Queue/msg 都可以分为临时和永久的。这个需要根据业务设置持久化方式。
3.对于Queue中的每个消息,只能被一个消费者消费。且无法回溯。
RocketMQ
1.RocketMQ 的消息堆积模式为磁盘,堆积能力更强。 RocketMQ采用的单一的CommitLog文件进行消息存储(同一个broker的所有topic消息存储在一个文件)。同时通过consumeQueue 记录每个队列的消息的偏移量和物理地址。
2.commitLog生成规则:
(1)文件的默认1G,超过这个值(或者其他因数),重新建一个日志
(2)名字长度为20位,左边补零,剩余为起始偏移量。eg: