本文主要介绍RocketMQ在Windows和Ubuntu系统中的安装及启动
,然后简单介绍NameServer、Broker和Proxy在RocketMQ中的角色
,以及安装并使用可视化工具Rocket Dashboard
。
一、在Windows系统安装RocketMQ以及配置环境变量
1. 下载RocketMQ并解压
进入RocketMQ的下载页面,选择要下载的版本,比如这里选择最新的5.1.4
的版本,然后选择Binary下载 。Binary为编译之后的文件,可以直接运行,Source是源码文件,下载之后需要先编译然后才可以运行。
下载完成后,将压缩包解压到指定目录,比如这里解压到 D:\my-software\rocketmq-all-5.1.4-bin-release
。
2. 配置环境变量
新建环境变量,变量名为ROCKETMQ_HOME
,变量值为RocketMQ的解压目录。
然后在Path变量中,添加RocketMQ的bin目录。
二、在Ubuntu/Linux系统安装RocketMQ以及配置环境变量
1. 下载RocketMQ并解压
在Linux系统中,可以使用 wget
命令来下载RocketMQ。首先,进入RocketMQ的下载页面,然后选择要下载的版本,鼠标右键复制链接地址,比如这里选择5.1.4
版本。然后打开Linux终端,运行以下命令来下载:
bash
wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip
Note:Binary为编译之后的文件,可以直接运行,Source是源码文件,下载之后需要先编译然后才可以运行。
下载之后,运行 ls
命令查看是否下载成功。
然后,安装unzip
工具将zip文件解压。
bash
sudo apt install unzip
安装完成后,运行以下命令将下载的RocketMQ解压到指定目录,这里解压到/usr/local
目录下。
bash
sudo unzip rocketmq-all-5.1.4-bin-release.zip -d /usr/local/
2. 配置环境变量
首先,运行 sudo vim /etc/profile
打开文件。
然后将以下内容复制到该文件末尾,之后按ESC
键,然后按Shift+:
,输入wq
保存。
bash
export ROCKETMQ_HOME=/usr/local/rocketmq-all-5.0.0-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin
保存之后,运行 source /etc/profile
使环境变量生效。
三、RocketMQ中的NameServer、Broker和Proxy
1. RocketMQ 5.0之前的NameServer和Broker
RocketMQ的基础消息模型是基于发布-订阅(Pub-Sub)模型,即生产者(Producer)将消息发送到某个**Topic(主题)**中,消费者(Consumer)通过订阅该Topic来接收消息。这里的Topic指的是,在开发过程中根据不同的业务,将消息分为不同的类别。比如常见的商城系统,就可以将其分为订单消息、库存消息、物流消息等。这里的订单消息、库存消息、物流消息就是3个Topic(主题)。
但Topic只是一个逻辑概念,是根据不同的业务从而将消息进行分类以作区分。RocketMQ中消息实际是存储在**Broker(代理服务器)**中的,Broker主要负责消息的发送、查询和存储。
在启动Broker时,需要指定**NameServer(名字服务器)**的地址,同时将Broker自身的消息发送给NameServer。NameServer主要包括以下两个功能:
- Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;
- 路由信息管理,每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。
由此可以看出,我们下载的RocketMQ主要包括两个服务:NameServer和Broker。NameServer主要负责Broker管理和路由信息管理,Broker主要负责消息的发送、查询和存储。因为Broker启动时需要向NameServer注册信息,所以当启动RocketMQ时,首先需要启动NameServer,然后再启动Broker。
同时也可以了解RocketMQ基本的工作流程 :生产者发送消息时需要指定topicName(主题名称)
,然后向NameServer查询该Topic的Broker地址。获取到Broker地址后,生产者向Broker发送消息。在RocketMQ中,消费者是主动拉取消息,所以消费者也需要通过topicName
向NameServer查询Broker地址,然后再去该Topic查询有没有消息可以消费。
RocketMQ官网中的一张图描述了其基本工作流程:
2. RocketMQ 5.0之后新增的Proxy
在RocketMQ 5.0之后,引入了全新的弹性无状态代理模式,新增了Proxy服务。Proxy将当前Broker的职责进行拆分,承担了客户端的协议适配、权限管理、消费管理等计算功能,使Broker更专注于存储能力,而Broker专注于计算能力,将存储和计算分离。
下图说明了RocketMQ 5.0之后的架构:
四、启动RocketMQ
首先我们下载RocketMQ并配置了环境变量,之后又了解了RocketMQ中的NameServer、Broker和Proxy的作用,然后就可以启动RocketMQ了。Note:运行RocketMQ需要提前配置好Java环境变量!
1. 在Windows中启动RocketMQ
首先在终端执行 mqnamesrv
命令打开NameServer,该服务默认占用9876
端口号。然后执行 mqbroker -n localhost:9876
命令启动Broker。
2. 在Ubuntu/Linux系统中启动RocketMQ
2.1 修改NameServer和Broker初始堆内存
在Linux系统中,启动NameServer时默认占用的JVM堆内存大小为4G,而启动Broker则需要占用8G的JVM堆内存。所以大多数情况下,需要根据计算机实际内存来修改堆内存大小。
修改NameServer和Broker初始堆内存涉及RocketMQ中bin目录下的两个文件:runserver.sh
和runbroker.sh
。
- 终端运行
sudo vim /usr/local/rocketmq-all-5.1.4-bin-release/bin/runserver.sh
命令打开文件,需要修改的部分如下图所示:
比如计算机内存为4G,这里可以将NameServer初始堆内存设置为512M。
bash
-Xms512M -Xmx512M -Xmn256M
-Xms512M -Xmx512M
- 终端运行
sudo vim /usr/local/rocketmq-all-5.1.4-bin-release/bin/runbroker.sh
命令打开文件,需要修改的部分如下图所示:
比如计算机内存为4G,这里可以将Broker初始堆内存设置为1G。
bash
-Xms1g -Xmx1g
修改完成之后保存退出,这样就修改了NameServer和Broker初始堆内存。
2.2 启动NameServer和Broker
使用以下命令来启动NameServer:
bash
nohup mqnamesrv > /dev/null 2>&1 &
这里的nohup
表示不挂断地运行命令,即命令执行到一半即使把终端关掉,该命令也会执行下去,末尾的&
表示该命令后台运行,不会把日志输出到终端。而nohup
命令默认会输出日志文件nohup.out
,由于RocketMQ已经有自己的日志文件,所以使用> /dev/null 2>&1
使其不会生成nohup.out
日志文件。
接下来运行以下命令来查看NameServer启动是否成功:
bash
tail -f ~/logs/rocketmqlogs/namesrv.log
NameServer默认占用9876
端口号,启动NameServer之后,再以Local模式启动Broker和Proxy。Broker默认端口号为10911
,Proxy默认占用端口号为8081
:
bash
nohup mqbroker -n localhost:9876 --enable-proxy > /dev/null 2>&1 &
然后查看Broker启动是否成功:
bash
tail -f ~/logs/rocketmqlogs/proxy.log
五、安装并可视化工具RocketMQ Dashboard
RocketMQ Dashboard是RocketMQ的可视化工具,有了可视化工具就可以不需要使用命令行来操作RocketMQ。安装RocketMQ Dashboard有两种方式:源码安装和Docker安装。点击这里可访问RocketMQ的github仓库下载源码。
但这里推荐使用Docker安装,相对源码安装要简单得多。如果电脑中没有安装Docker,可参考这篇文章来安装。
5.1 使用Docker下载RocketMQ Dashboard镜像
打开终端,运行以下命令来下载最新的RocketMQ Dashboard镜像:
bash
sudo docker pull apacherocketmq/rocketmq-dashboard:latest
5.2 运行RabbitMQ Dashboard镜像
下载完成后,运行以下命令运行:
bash
docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 apacherocketmq/rocketmq-dashboard:latest
Note: 因为NameServer运行在主机上,Dashboard运行在Docker容器里,所以这里的127.0.0.1:9876指的是Docker容器中的端口,如果使用该地址会导致Dashboard连接不上NameServer。所以这里首先需要查询主机IP地址,然后修改为主机IP地址。
-d
: 表示后台运行容器,并返回容器ID--name
:表示为容器起别名-e
:设置环境变量-p
: 映射Docker容器端口和宿主机端口,比如计算机中8080端口被占用,可以使用-p 8081:8080来解决
运行完成之后,此时使用浏览器打开IP:8080
端口即可访问RocketMQ Dashboard页面。如下图所示:
至此,已完成了在Windows/Ubuntu系统中安装RocketMQ及其可视化工具。如果有所帮助的话,麻烦点个赞或请作者吃包辣条吧!