RocketMQ 简介
1.RocketMQ 是一个队列模型的消息中间件,具有高性能,高可用,高实时等特性,它并不支持JMS(java消息服务)规范,但参考了JMS规范和kafak等的思想。
2.Producer 、Consumer,队列都可以分布式。
3.Producer可以向队列轮流发送消息,队列的集合称为Topic,Consumer可以做广播消费,也可以做集群消费。
4.能够保证严格的消息顺序
5.提供消费者水平订阅扩展能力
6.亿级的消息堆积能力
7.较少的依赖
RocketMQ术语介绍
1.Producer 消息生产者,即生产消息的系统,一般指业务系统。
2.Consumer 消息消费者,即消费消息的系统,一般指后端的异步处理系统。
3.ProducerGroup 生产者组,指一类发送消息的系统。
4.ConsumerGroup 消费组,指消费同一类消息的系统
5.Broker 消息中间件,主要完成消息的存储,转发,是消息系统的核心组件。
5.Topic 消息主题,消息队列的集合。
6.MessageQueue 消息队列,RocketMQ 的所有消息都是持久化的,可以把MessageQueue 理解为一个长度无限的数组,通过下标offset 访问消息
7.广播消费消息模型,指消费这消费某主题的所有队列的消息,消费组在该消息模型下不起作用,类似JMS的publish/subscribe.
8.集群消费消息模型,是指同一个消费组的消费者各自消费某一主题的消费队列的消息,比如有一个主题 topicA,该主题有4个队列(创建主题的时候可以指定该主题的队列的数量),有一个消费组testConsumerGroup,该消费组有四个消费者(四个机器或者四个进程),则四个消费者各自消费一个消息队列。
RocketMQ 提供功能
1.消息的顺序,即消费消息的顺序同发送消息消息的顺序一致。
2.消息重试,即消息消费失败后,RocketMQ 提供了一种机制,可以让消息在消费一次。
3.定时消息,即指消息到达broker后,并不是立即投递给消费者,而是在某个时间点或者一定的延时后在投递,RocketMQ支持一定的延时投递消息。
4.消息回溯,是指消息成功被消费者消费后,可能需要一个机制重新消费以前的消息,rocketmq支持回溯消费某个时间点的消息(支持到毫秒级别),可以向前也可以向后。
5.消息重复,RocketMQ 保证 At least once ,即消息至少被投递一次,并不支持 Exactly only once(支持这个需要生产者指发送一次,broker只投递一次,实现这个会损失性能),所以由于网络或者消费组启动或者停止,可能造成消息重复投递,需要消费者做到去重,即消费消息要做到幂等,但在大部分情况下,消息是不会重复投递的。