最近有在学习Rockert,就顺便做个学习笔记发出来,希望对在座的各位遇到帮助
简单介绍
RocketMQ是一款最早由阿里巴巴集团开发和维护的分布式队列模型的消息中间件。它最初源自于阿里巴巴内部对于处理大规模数据流的需求。
在RocketMQ的开发过程中,开发团队秉承着对业界优秀消息中间件的借鉴和JMS规范的参考,并结合了阿里巴巴在双十一等大型活动中的实际业务需求。因此,RocketMQ不仅仅是一个简单的消息队列系统,更是在实践中不断优化和完善的开源框架。
RocketMQ的特色之一是其在业务高峰期的稳定性和可靠性,它通过各种机制实现了业务消峰填谷、分布式事务等功能,使得其在处理大规模消息传输时表现出色,被广泛应用于众多大型系统和活动中。
官网地址:http://rocketmq.apache.org/
为什么选择RocketMQ
支持集群模型,负载均衡,水平扩展能力
默认就采用集群模式,支持广播模型,实现负载均衡,水平扩展能力是否轻松,不需要做任何配置,直接就可以精选水平扩展
亿级别的消息堆积能力
在天猫双十一的情况下能做到上亿基本的消息堆积
采用零拷贝的原理,顺序写盘,随机读
采用零拷贝的原理实现数据通信,数据的读写是顺序写盘,随机读
API非常丰富
提供了丰富的消息拉起和投递的机制,比如说它支持同步消息,在3.6.8之后又支持异步消息,迭代速度非常快,并且还支持顺序消息,延迟消息,事务消息,基本上所有的消息投递方式RocketMQ都会提供对于的API,4.3.0已经开源的分布式消息
代码十分优秀,底层采用通信框架Netty NIO框架
NameServer代替Zookerper
自己实现了NameServer去替代Zookerper,去实现整个服务的协调和服务的寻址,主要因为NameServer是更轻量级的网络路由服务
强调集群无单点,可扩展,任意一点高可用,水平扩展
消息失败重试机制,消息可查询
类别ReabtMQ消息丢失是不支持重试的,只能手动的做一个重回队列,或者重新发,或者还有死信队列,或者一些监听在处理,而RockerMQ消息如果消费失败,就会重新发送,发送是有时间间隔的,如1秒,5秒,10秒等,每各一个时间间隔进行重试,并且还能带一些重试的次数,比如定义重试10此就不在重试了,就算这个消息失败,都可以做到,并且消息是可以查询的,可以把控这个消息的进度和相关的消息
并且在RocketMQ的最新版本放弃之前的Rocket控制台的使用,采用SpringBoot的方式构建一个控制台,这表示我们可以非常方便的一键启动,不需要在使用什么容器在修改配置
开源社区活跃,成熟度(经过双十一的考验)