RocketMQ是一个队列模型的消息中间件,具有
- 高性能
- 高可靠
- 高实时
- 分布式
采用java语言开发的分布式的消息系统,阿里巴巴团队开发,2016年底贡献给apache。
模型
- 队列模型
- 主题模型或发布订阅模型
在主题模型种,消息的生产者被成为发布者(Publisher),消息的消费者被称为订阅者(Subscriber),存放消息的容易被称为主题(topic)。
发布者将消息发布到指定的主题种,订阅者需要提前订阅主题才能接受特定主题的消息。
RocketMQ中的消息模型
- Producer Group 生产者组:代表某一类的生产者,比如多个秒杀系统作为生产者,多个合在一起就是一个生产者组,一个生产者组通常产生相同的消息。
- Topic 主题:代表一类消息,比如订单消息,物流消息等。
- Consumer Group 消费者组:代表某一类的消费者,比如多个短信系统作为消费者,多个合在一起就是个一个消费者组,它们一般消费相同的消息。
主题中存在多个队列,生产者每次生产消息之后是指定主题的某个队列发送消息的。
消费位移:消息被一个消费者组消费之后是不会删除的(因为其他消费者组也需要),为每个消费组维护一个消息位移。每次消费者组消费完会返回一个成功的响应,然后队列再把维护的消费位移加一,这样就不会出现消费被重复消费。
为什么一个主题中要维护多个队列?提高并发能力。
RocketMQ在一个topic中配置多个队列并且每个队列维护每个消费者组的消费位置,实现了主题模式/发布订阅模式。
RocketMQ架构图
未完。。。