一、MQ简介

RocketMQ是一款分布式、队列模型的消息中间件,是阿里巴巴集团自主研发的专业消息中间件,借鉴参考了JMS规范的MQ实现,更参考了优秀的开源消息中间件KAFKA,实现了业务消峰、分布式事务的优秀框架

二、MQ基本概念

1、Message:消息,消息队列中信息传递的载体

2、Topic:消息主题,一级消息类型,通过 Topic 对消息进行分类。可以理解为是数据库

3、Tag:消息标签,二级消息类型,用来进一步区分某个 Topic 下的消息分类。可以理解为数据库中的表

4、Producer:消息生产者,也称为消息发布者,负责生产并发送消息

5、Consumer:消息消费者,也称为消息订阅者,负责接收并消费消息。

三、RocketMQ的4个组件

1、nameserver: 存储当前集群所有Brokers信息、Topic跟Broker的对应关系

2、Broker: 集群最核心模块,主要负责Topic消息存储、消费者的消费位点管理(消费进度)。

3、Producer: 消息生产者,每个生产者都有一个ID(编号)
4、Consumer: 消息消费者,每个订阅者也有一个ID(编号)

四、MQ工作流程

1、启动Nameserver,Nameserver起来后监听端口,等待Broker、Produer、Consumer连上来,相当于一个路由控制中心。

2、Broker启动,跟所有的Nameserver保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有topic信息。注册成功后,Nameserver集群中就有Topic跟Broker的映射关系。

3、收发消息前,先创建topic,创建topic时需要指定该topic要存储在哪些Broker上。也可以在发送消息时自动创建Topic。

4、Producer发送消息,启动时先跟Namesrv集群中的其中一台建立长连接,并从Nameserver中获取当前发送的Topic存在哪些Broker上,然后跟对应的Broker建立长连接,直接向Broker发消息。

5、Consumer跟Producer类似。跟其中一台Nameserver建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,开始消费消息。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐