应用
rocket-mq有四个概念
- consumer
- producer
- name-server
- broker
如果我要建一个队列,需要建立一个topic,topic支持group,group下支持两种模式:广播和集群。
集群就是所有的Consumer合起来消费一份全部消息,广播所有consumer都消费一份全部消息
name-server存储了所有broker的状态,存储消息到内存里面
broker控制消息的写入文件和内存队列
- consumeQueue(逻辑队列,每个consumerQueue一个)和CommitLog(实际存储)
消费者支持pull和push两种模式
- pull,自己去拉,做各种控制,需要处理异常场景和提交offset
- push,服务端通过长连接,定时推送消息
支持tag和key进行消息过滤
保证消息有序,全局有序只能是单队列了
局部有序,可以在生产端实现MessageQueueSelector接口即可,消费端实现MessageListenOrder
消息发送
同步刷盘和异步刷盘
- 异步刷盘,写内存成功返回
- 同步刷盘,写入磁盘成功返回
同步复制和异步复制
- 同步复制:都写入成功才返回给客户度
- 异步复制:只要master broker写入就返回