windows下安装RocketMQ
windows下安装RocketMQ
一、下载文件
这里我们采用4.7.1版本的rocketmq,进入4.7.1版本界面,选择二进制版下载.以下为二进制版下载地址,直接点击下载即可:4.7.1二进制版下载
二、环境准备
2.1 环境版本
项目 | 属性 |
---|---|
系统 | windows server 2012 |
JDK版本 | JDK1.8 |
rocketmq | 4.7.1 |
2.2 设置环境变量
ROCKETMQ需要使用JAVA环境,因此需要先配置好JAVA的环境变量,步骤省略。
-
2.2.1 设置ROCKETMQ_HOME
变量名:ROCKETMQ_HOME
变量值:D:\rocketmq(你的MQ解压后的路径,到bin目录的上级即可) -
2.2.2 设置NAMESRV_ADDR
变量名:NAMESRV_ADDR
变量值:localhost:9876(IP和端口具体情况设定,我这里采用单机部署因此可以用localhost。)
三、启动
3.1 启动name-server
-
以管理员身份运行powershell,键入以下命令:
$host.ui.RawUI.WindowTitle="rocketmq-name-server" # 修改窗口标题,防止过多的窗口不好定位目标 cd 'D:\rocketmq' # 进入rocketmq解压后的文件夹,视具体情况进行修改 .\bin\mqnamesrv.cmd # 启动name-server
-
name-server启动完成后的界面:
3.2 启动broker
- 重新以管理员身份运行一个powershell,键入以下命令:
$host.ui.RawUI.WindowTitle="rocketmq-broker" # 修改窗口标题,防止过多的窗口不好定位目标 cd 'D:\rocketmq' # 进入rocketmq解压后的文件夹,视具体情况进行修改 .\bin\mqbroker.cmd autoCreateTopicEnable=true # 启动broker
- broker启动完成后的界面:
四、测试消息
-
消费消息测试
重新打开一个powershell,执行命令:.\bin\tools.cmd org.apache.rocketmq.example.quickstart.Consumer
消费者测试完成,等待消息发送。。。。。。 -
发送消息测试
最好是将消费消息的powershell和发送消息的powershell并排放置,这样能看到当消息一经发送,消费者powershell就开始滚动接受消息。
重新打开一个powershell,执行命令:
.\bin\tools.cmd org.apache.rocketmq.example.quickstart.Producer
消息发送测试成功,消息成功被消费者接收消费。
五、碰到的问题与解决
-
5.1 找不到或无法加载主类 Files\rocketmq\Files\rocketmq\lib
由于rocketmq启动时会将自身目录下的lib目录加入到依赖路径里面去,因此当此路径存在空格的时候会出现这个异常。注意这里我用的路径是D:\Program Files\rocketmq
,环境变量里面的ROCKETMQ_HOME
对用的也是配置这个D:\Program Files\rocketmq
,Program Files中间是有空格的。
因此需要把RocketMQ移出Program Files或者将Program Files重命名取消空格(这个不推荐,因为正常来说Program Files目录下肯定安装了很多软件,一改全完蛋。)。
所以当把RocketMQ移到了D盘根目录下,环境变量也对应修改为根目录下,是不会有这个问题的。 -
5.1 找不到或无法加载主类Files\Java\jdk1.8.0_144\lib;D:\Program
上面说到rocketmq会将lib目录加到依赖路径里面去,那么同样肯定会将JAVA的classPath加进运行路径里面去。这个问题就是在拼接classPath时有些版本的windows不能完整的解析拼接命令导致的异常。这里我们是在运行broker时候出现的异常,因此去看下bin目录下的runbroker.cmd(运行的是mqbroker.cmd,实际打开的是runbroker.cmd)文件里面的内容:
看到第26行,我们需要将:set CLASSPATH=.;%BASE_DIR%conf;%CLASSPATH%
改为(对%CLASSPATH%添加英文的双引号):
set CLASSPATH=.;%BASE_DIR%conf;"%CLASSPATH%"
改完后的文件:
然后重新运行命令即可成功启动:.\bin\mqbroker.cmd autoCreateTopicEnable=true