1. 消息队列RocketMQ认识

1、 什么是消息队列

消息队列是一种消息中间件,广义上由生产者、消费者,消息Broker组成。

架构图

2、角色介绍

2.1、Broker

消息中转角色,负责存储消息、转发消息。

2.2、Name Server

名称服务充当路由消息的提供者。生产者或消费者能够通过名字服务查找各主题相应的Broker IP列表。多个Namesrv实例组成集群,但。

2.3、Producer

2.4、Consumer

3. 核心流程

4. 核心概念

4.1 Message

消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。消息载体(message payload)中每个消息拥有唯一的Message ID,且可以携带具有业务标识的Key。系统提供了通过Message ID和Key查询消息的功能。

4.2 topic

消息的逻辑分类,发消息之前必须要指定一个topic才能发,就是将这条消息发送到这个topic上。消费消息的时候指定这个topic进行消费。就是逻辑分类。每个消息只能属于一个主体。

4.3 queue

1个Topic会被分为N个Queue,数量是可配置的。message本身其实是存储到queue上的,消费者消费的也是queue上的消息。多说一嘴,比如1个topic4个queue,有5个Consumer都在消费这个topic,那么会有一个consumer浪费掉了,因为负载均衡策略,每个consumer消费1个queue,5>4,溢出1个,这个会不工作。

4.4 Tag

Tag 是 Topic 的进一步细分,顾名思义,标签。每个发送的时候消息都能打tag,消费的时候可以根据tag进行过滤,选择性消费。

4.5 Message Model

消息模型:集群(Clustering)和广播(Broadcasting)

4.6 Message Order

消息顺序:顺序(Orderly)和并发(Concurrently)

4.7 Producer Group

消息生产者组

4.8 Consumer Group

消息消费者组