RocketMQ在阿里云上的商业版本,集成了阿里内部一些更深层次的功能及运维定制。开源版本,功能上略有缺失,但大体上是一样的。
使用Java开发,便于深度定制。最早叫MetaQ。消息吞吐量虽然依然不如Kafka,但是却比RabbitMQ高很多。在阿里内部,RocketMQ集群每天处理的请求数超过5万亿次,支持的核心应用超过3000个。经过阿里双十一多次考验。RocketMQ天生就为金融互联网而生,因此他的消息可靠性相比Kafka也有了很大的提升,而消息吞吐量相比RabbitMQ也有很大的提升。另外,RocketMQ的高级功能越来越全面,广播消费、延迟队列、死信队列等等高级功能一应俱全,甚至某些业务功能比如事务消息,已经很领先。除了Java客户端,其他语言客户端也有不断推出。
一、工作原理
1.1、集群架构:
RocketMQ由以下这几个组件组成
- NameServer : 提供轻量级的Broker路由服务。管理Broker。
- Broker:实际处理消息存储、转发等服务的核心组件。
- 消息生产者集群和消费者集群。通常是业务系统中的一个功能模块。
- Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息。
- Message Queue:相当于是Topic的分区;用于并行发送和接收消息。一个queueId就代表了一个Mes