RocketMQ中的基本概念
消息Message
消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。
主题Topic
Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。
一个生成者可以同时发送多种Topic的消息;而一个消费者只能消费特定的topic。
标签tag
消息的二级分类,相同topic下区分不同类型的消息。
队列queue
存储消息的物理实体。一个topic中可以包含多个queue。一个queue的消息只能被一个消费者消费。
消息标识messageId/key
每个消息拥有唯一的messageId,且可以携带具有业务标识的key,方便对消息的查询。
messageId有两个:生产者send消息时会字段生成一个messageId(msgId),当消息到达broker后,也会自动生成一个messageId(offsetMsgId)。它们都被成为消息标识。
msgId:由producer端生成,生成规则:producerIp+进程pid+MessageClientIDSetter类的ClassLoader的hashcode+当前时间+AutomicInteger自增技术器。
offsetMsgId:由broker端生成,生成规则:brokerIp+物理分区的offset(queue中的偏移量)。
key:用户指定的业务相关的唯一标识。
Producer
消息生成者,负责生成消息。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。
RocketMQ中的消息生成者都是以生产者组的形式出现。生产者组是同一类生产者的集合,发送相同topic类型的消息。一个生产者组可以同时发送多个主题的消息。
Consumer
消息消费者,负责消费消息。一个消息消费者会从Broker服务器中获取到消息,并对消息进行相关业务处理。
RocketMQ中的消息消费者都是以消费者组的形式出现。消费者组是同一类消费者的集合,消费的是同一个topic的消息。实现了负载均衡(将topic中的不同queue平均分配给不同的消费者)和容错(一个消费者挂了,其他可以继续消费它对应的queue)。
消费者组的Consumer数量应该小于等于订阅topic的queue数量,否则的话多出的consumer将不能消费消息。
一个topic类型的消息可以被多个消费者同时消费。
Name Server
Name Server是由Broker和Topic路由的注册中心,支持Broker的动态注册与发现。
Broker
Broker充当着消息中转角色,负责存储消息、转发消息。Broker在RocketMQ系统中负责接收并存储从生产者发送来的消息,同时为消费者的拉取请求做准备。Broker同时也存储着消息相关的元数据,包括消费者组消费进度偏移offset、主题、队列等。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号