rocketMQ是阿里开源产品,后捐献给了apache成为旗下产品。
rocketMQ是根据amqp协议采用java语言编写的成熟企业级消息产品。
This diagram shows the flow of messages through the AMQ model server:
路由规则:从exchange路由到messageQueue的逻辑:
The Direct Exchange Type:直连模式,精确匹配routing key;
The Fanout Exchange Type:广播模式;
The Topic Exchange Type:Topic模式,采用"*" 和 "#" 进行匹配;
The Headers Exchange Type:额。。。。
rocketMQ 分为四大部分:
producer集群/consumer集群/brocker集群/nameserver集群
一张特别经典的图片:
brocker 集群 采用主从协议:
- producer只链接master,master同步到slave(同步或异步方式);
- consumer链接master和slave,主要在master读取消息,master宕机或者繁忙到slave读取消息;
- namesvr用于保证brocker的集群关系,状态等。
MQ可以支持把消息持久化:
- 持久化的方式为保存文件,文件叫做commitlog(另外维护了一个consumerQueue相当于索引,一个indexfile,用于tt哦那个过key和其他时间查询条件查询);
- 持久化分为两种方式,同步刷盘和异步刷盘。
死信队列:
MQ支持消费者重试,重试配置默认为16次,当16次重试结束后,消息会存放到一个死信队列中,死信队列用于存放groupId 级别的消息,会存放三天的消息;
待续。。。