RocketMQ详解、安装、运行

一、初识RocketMQ

        我们平时使用一些体育新闻软件,会订阅自己喜欢的一些球队板块,当有作者发表文章到相关的板块,我们就能收到相关的新闻推送。

        发布-订阅(Pub/Sub)是一种消息范式,消息的发送者(称为发布者、生产者、Producer)会将消息直接发送给特定的接收者(称为订阅者、消费者、Comsumer)。而RocketMQ的基础消息模型就是一个简单的Pub/Sub模型。

 1、生产者:

负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。RocketMQ提供多种发送方式,同步发送、异步发送、顺序发送、单向发送。

2、 消费者:

负责消费消息,一般是后台系统负责异步消费。一个消息消费者会从Broker服务器拉取消息、并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费。

3、主题:

表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 

二、RocketMQ模型

1、RocketMQ基础消息模型

一个简单的Pub/Sub模型

目录

一、初识RocketMQ

 1、生产者:

2、 消费者:

3、主题:

二、RocketMQ模型

1、RocketMQ基础消息模型

2、RocketMQ 扩展后的消息模型 

三、NameServer(名字服务器 )

四、Broker(代理服务器 )

五、RocketMQ集群工作流程 

1. 启动NameServer​

2. 启动 Broker​

3. 创建 Topic​

4. 生产者发送消息​

5. 消费者接受消息​

 六、下载安装运行RockeyMQ

1.下载地址:

2.配置系统环境变量 

3.启动NAMESERVER

 4. 启动BROKER


 

        上图就是一个基本的消息系统模型,包括生产者 (Producer)消费者 (Consumer),中间进行基于消息主题(Topic)的消息传送。

        在基于主题的系统中,消息被发布到主题或命名通道上。消费者将收到其订阅主题上的所有消息,生产者负责定义订阅者所订阅的消息类别。这是一个基础的概念模型,而在实际的应用中,结构会更复杂。例如为了支持高并发和水平扩展,中间的消息主题需要进行分区,同一个Topic会有多个生产者,同一个信息会有多个消费者,消费者之间要进行负载均衡等。

2、RocketMQ 扩展后的消息模型 

扩展的消息系统模型:

上图就是一个扩展后的消息模型,包括两个生产者两个消息Topic,以及两组消费者 Comsumer

存储消息Topic的 代理服务器Broker ),是实际部署过程对应的代理服务器。

  • 为了消息写入能力的水平扩展,RocketMQ 对 Topic进行了分区,这种操作被称为队列(MessageQueue)。

  • 为了消费能力的水平扩展,ConsumerGroup的概念应运而生。

三、NameServer(名字服务器 

NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现。

主要包括两个功能:

  • Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;
  • 路由信息管理,每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。

NameServer通常会有多个实例部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息。当某个NameServer因某种原因下线了,客户端仍然可以向其它NameServer获取路由信息。

四、Broker(代理服务器 )

Broker主要负责消息的存储、投递和查询以及服务高可用保证。

NameServer几乎无状态节点,因此可集群部署,节点之间无任何信息同步。Broker部署相对复杂。

在 Master-Slave 架构中,Broker 分为 Master 与 Slave。一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。Master 与 Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。

部署模型小结

  • 每个 Broker 与 NameServer 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 NameServer。

  • Producer 与 NameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取Topic路由信息,并向提供 Topic 服务的 Master 建立长连接,且定时向 Master 发送心跳。Producer 完全无状态。

  • Consumer 与 NameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master、Slave 建立长连接,且定时向 Master、Slave发送心跳。Consumer 既可以从 Master 订阅消息,也可以从Slave订阅消息。

五、RocketMQ集群工作流程 

1. 启动NameServer

启动NameServer。NameServer启动后监听端口,等待Broker、Producer、Consumer连接,相当于一个路由控制中心。

2. 启动 Broker

启动 Broker。与所有 NameServer 保持长连接,定时发送心跳包。心跳包中包含当前 Broker 信息以及存储所有 Topic 信息。注册成功后,NameServer 集群中就有 Topic跟Broker 的映射关系。

3. 创建 Topic

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

4. 生产者发送消息

生产者发送消息。启动时先跟 NameServer 集群中的其中一台建立长连接,并从 NameServer 中获取当前发送的 Topic存在于哪些 Broker 上,轮询从队列列表中选择一个队列,然后与队列所在的 Broker建立长连接从而向 Broker发消息。

5. 消费者接受消息

消费者接受消息。跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,然后开始消费消息。

 六、下载安装运行RockeyMQ

1.下载地址:

https://rocketmq.apache.org/release_notes/release-notes-4.9.2/

2.配置系统环境变量 

ROCKETMQ_HOME   指向到你的mq解压路径,下面是我的环境变量示例 

3.启动NAMESERVER


Cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqnamesrv.cmd’,启动NAMESERVER。成功后会弹出提示框,此框勿关闭。 

 4. 启动BROKER

Cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’,启动BROKER。成功后会弹出提示框,此框勿关闭。

 至此RocketMQ已安装启动完毕。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Windows 10上启动RocketMQ,您需要执行以下步骤: 1. 下载RocketMQ的发布包。您可以在Apache RocketMQ的官方网站上下载适用于Windows的发布包。根据引用,您可以从Apache RocketMQ的发布页面下载rocketmq-all-4.2.0-bin-release和rocketmq-externals-release-rocketmq-console-1.0.0两个文件。 2. 解压缩下载的发布包。找到解压后的文件夹,确保您已准备好在后续步骤中使用它。 3. 启动RocketMQ的NameServer。打开命令提示符或PowerShell,并导航到解压后的RocketMQ文件夹。然后,执行以下命令启动NameServer: ``` .\bin\mqnamesrv.cmd ``` 请注意,这是在Windows系统上启动NameServer的命令。如果您使用的是不同的操作系统,请参考相应的文档。 4. 启动RocketMQ的Broker。在同一个命令提示符或PowerShell窗口中,执行以下命令启动Broker: ``` .\bin\mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true ``` 这将启动一个名为Broker的RocketMQ实例,并将其连接到本地运行的NameServer。请注意,这里的命令假设您正在本地运行RocketMQ,并且NameServer的地址为localhost:9876。如果您的配置不同,请相应地更改命令。 5. 启动RocketMQ的控制台(可选)。如果需要使用RocketMQ的控制台,请在解压后的RocketMQ文件夹中找到rocketmq-externals-release-rocketmq-console-1.0.0.jar文件,并执行以下命令启动控制台: ``` java -jar rocketmq-externals-release-rocketmq-console-1.0.0.jar ``` 这将启动RocketMQ的控制台,并通过默认端口访问,通常是http://localhost:8080。 这些是在Windows 10上启动RocketMQ所需的基本步骤。根据您的配置和需求,可能还有其他步骤或配置项。请参考RocketMQ的官方文档以获取更详细的信息和指导。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Windows下的RocketMQ启动](https://blog.csdn.net/qq_64872360/article/details/126432287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值