RocketMQ

Producer(生产者)

即消息生产者,负责生产消息。

RocketMQ中的生产者都是以生产者组的形式出现的。生产者组是统一类生产者的集合,这类生产者发送相同Topic(主题)的消息。一个生产者组可以同时发送多个主题的消息。


Consumer(消费者)

即消息消费者,负责消费消息。消费者会从Broker服务器中获取到消息,并对消息进行业务处理。

RocketMQ中的消息消费者都是以消费者组(Consumer Group)的形式出现的。消费者组是同一类消费者的集合,这类Consumer消费的是同一个Topic类型的消息。


消费者组中Consumer的数量应该小于等于订阅Topic的Queue数量。如果超出Queue数量,则多出的Consumer将不能消费消息。


一个Topic类型的消息可以被多个消费者组同时消费。


消费者组只能消费一个Topic的消息,不能同时消费多个Topic消息

一个消费者组中的消费者必须订阅完全相同的Topic


Broker

Broker是 RocketMQ 的核心,大部分‘重量级”工作都是由 Broker完成的。
包括接收 Producer 发过来的消息、处理 Consumer 的消费消息请求、消息的持 久化存储、消息的 HA 机制以及服务端过滤功能等 。


Topic(主题)

消息类别。生产者可以给不同主题发送消息。消费者也可以订阅多个主题。

一个主题可以包含多条消息,一条消息只能有一个主题。


Tag(子主题)

消息的子主题。是主题下面的更细分,方便同一主题下消息的区分与查询。

Topic是消息的一级分类,Tag是消息的二级分类。


GroupName(组)

代表具有相同角色的生产者组合或者消费者组合。称为生产者组或消费者组。

在HA下多个生产者的情况下,一个生产者下线,可以联系该组中另外一个生产者实例继续完成任务,不至于影响整个业务。在消费者组中可以实现消息消费的负载均衡和消息容错目标。


Queue (队列)

存储消息的物理实体。一个Topic(主题)中可以包含多个Queue(队列),每个Queue中存放的就是该Topic的消息。一个Topic的Queue也被称为一个Topic中消息的分区(Partition)。

一个Topic的Queue中的消息只能被一个__消费者组__中的一个消费者消费。或者一个Queue中的消息__不允许同一个消费者组__中的多个消费者同时消费。


MessageId/Key (消息标识)

RocketMQ中的每个消息都有唯一的MessageId,且可以携带具有业务标识的key,以方便对消息的查询。

在生产者发送消息的时候会生成一个MessageId(msgId),当消息到达Broker时,Broker也会自动生成一个MessageId(offsetMsgId),两者与key都被称为消息标识。