在 macOS 上安装、部署和启动 Apache RocketMQ 与在 Linux 上非常相似。以下是详细的步骤指南:
📦 核心步骤概览
- 安装前提条件
- 下载 RocketMQ
- 解压安装包
- (可选)配置调整
- 启动 NameServer
- 启动 Broker
- 测试验证
- 停止服务
📍 详细步骤
1. 安装前提条件
- Java Development Kit (JDK): RocketMQ 需要 JDK 1.8 或更高版本。
- 确认安装: 打开终端,运行
java -version
。 - 如果未安装,请从 Oracle JDK 或 OpenJDK 下载并安装合适的 macOS 版本。
- 确认安装: 打开终端,运行
- 终端 (Terminal): 你将使用
终端.app
执行所有命令。
2. 下载 RocketMQ
- 访问 Apache RocketMQ 官方下载页面:
- 官方推荐: rocketmq.apache.org/download - 选择最新稳定版本(如
5.x.x
)。 - 镜像站点: 如果官方下载慢,可以使用 Apache 镜像站点(链接通常在下载页面上提供)。
- 官方推荐: rocketmq.apache.org/download - 选择最新稳定版本(如
- 下载 二进制发行版 (Binary Distribution) 。文件名通常类似于
rocketmq-all-5.x.x-bin-release.zip
。
3. 解压安装包
-
打开终端。
-
使用
cd
命令切换到存放下载 ZIP 文件的目录(例如~/Downloads
)。 -
使用
unzip
命令解压文件:bashunzip rocketmq-all-5.x.x-bin-release.zip
-
将解压后的目录移动到你希望安装的位置(例如你的用户目录或
/usr/local
)。这一步可选,但推荐:bashmv rocketmq-all-5.x.x-bin-release ~/rocketmq # 移动到用户主目录下的 rocketmq 文件夹 # 或者 sudo mv rocketmq-all-5.x.x-bin-release /usr/local/rocketmq sudo chown -R $(whoami) /usr/local/rocketmq # 修改所有权以便操作
-
进入 RocketMQ 主目录:
bashcd ~/rocketmq # 或 cd /usr/local/rocketmq
4. (可选)配置调整
- 调整 JVM 内存设置 (重要!): macOS(尤其是开发机)可能没有足够的空闲内存运行 RocketMQ 默认的较大堆设置。编辑以下两个脚本:
-
runserver.sh
(用于 NameServer):bashvi bin/runserver.sh # 或者使用你喜欢的文本编辑器 (nano, vscode 等)
找到类似
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g ..."
的行。将-Xms2g -Xmx2g
改为更小的值(例如-Xms512m -Xmx512m
或-Xms1g -Xmx1g
)。 -
runbroker.sh
(用于 Broker):bashvi bin/runbroker.sh
同样,找到包含
-Xms
和-Xmx
的行(可能是-Xms8g -Xmx8g
或类似),改为较小的值(例如-Xms512m -Xmx512m
,-Xms1g -Xmx1g
或-Xms2g -Xmx2g
)。 -
为什么需要调整? 默认配置是为生产服务器设计的。在个人开发机上不调整通常会导致
java.lang.OutOfMemoryError: Java heap space
错误而无法启动。
-
- Broker 配置文件 (broker.conf): 对于简单的单机本地测试,通常不需要修改
conf/broker.conf
。如果需要配置集群、持久化路径、ACL 等高级特性,才需要编辑此文件。初始启动时 RocketMQ 会使用内置默认配置。
5. 启动 NameServer
-
NameServer 是 RocketMQ 的服务注册与发现中心,必须首先启动。
-
在 第一个终端窗口 中,确保你位于 RocketMQ 主目录 (
~/rocketmq
或/usr/local/rocketmq
)。 -
执行启动命令:
bashnohup sh bin/mqnamesrv &
nohup
: 确保即使关闭终端窗口,进程也不会终止(可选,但对于后台运行很有用)。sh bin/mqnamesrv
: 运行 NameServer 启动脚本。&
: 在后台运行。
-
检查启动日志 确认是否成功:
bashtail -f ~/logs/rocketmqlogs/namesrv.log
看到关键日志
The Name Server boot success. serializeType=JSON
即表示启动成功。按Ctrl+C
停止查看日志。
6. 启动 Broker
-
Broker 是存储和传输消息的核心组件,它需要连接到已运行的 NameServer。
-
在 第二个终端窗口 中,确保位于 RocketMQ 主目录。
-
执行启动命令:
bashnohup sh bin/mqbroker -n localhost:9876 &
sh bin/mqbroker
: 运行 Broker 启动脚本。-n localhost:9876
: 指定 NameServer 的地址和端口(9876 是 NameServer 的默认端口)。如果 NameServer 不在本机或端口不同,需修改此地址。&
: 在后台运行。
-
检查启动日志 确认是否成功:
bashtail -f ~/logs/rocketmqlogs/broker.log
看到关键日志
The broker[broker-name, x.x.x.x:10911] boot success. serializeType=JSON and name server is localhost:9876
(其中x.x.x.x
是你的 IP 或主机名) 即表示 Broker 已成功启动并连接到 NameServer。按Ctrl+C
停止查看日志。
7. 测试验证
RocketMQ 自带了一些工具脚本可以快速测试生产和消费消息。
-
创建测试 Topic:
bashsh bin/mqadmin updateTopic -n localhost:9876 -t TestTopic -c DefaultCluster
updateTopic
: 创建或更新 Topic。-n localhost:9876
: NameServer 地址。-t TestTopic
: 要创建的 Topic 名称(可自定义)。-c DefaultCluster
: 所属集群名称(默认即可)。
-
使用自带 Producer 发送消息:
bashsh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
这个脚本会连接到本地的 NameServer (
localhost:9876
),向TopicTest
这个默认的 Topic 发送大量测试消息。你会在控制台看到发送成功的日志SendResult [sendStatus=SEND_OK, ...]
。 -
使用自带 Consumer 消费消息:
bashsh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
这个脚本会连接到本地的 NameServer,订阅
TopicTest
Topic,并开始消费刚刚 Producer 发送的消息。你会在控制台看到消费到的消息内容ConsumeMessageThread_%d Receive New Messages: [MessageExt...
。
成功看到消息发送和消费的日志,证明 RocketMQ 已在本机 macOS 上成功安装、部署并运行!🎉
8. 停止服务
-
停止 Broker: 在启动 Broker 的终端窗口(或者使用
ps -ef | grep mqbroker
找到进程 ID),运行:bashsh bin/mqshutdown broker
查看 broker.log 日志尾部 (
tail -f ...
) 确认The broker [broker-name, x.x.x.x:10911] has been shutdown successfully
。 -
停止 NameServer: 在启动 NameServer 的终端窗口(或者使用
ps -ef | grep mqnamesrv
找到进程 ID),运行:bashsh bin/mqshutdown namesrv
查看 namesrv.log 日志尾部确认
The Name Server shutdown successfully
。
📌 重要注意事项
- 内存设置: 这是 macOS 本地部署最常见的问题来源。务必 根据你的机器内存大小调整
runserver.sh
和runbroker.sh
中的-Xms
和-Xmx
参数,否则大概率启动失败。 - 防火墙/安全软件: 确保 macOS 防火墙或其他安全软件没有阻止 RocketMQ 使用的端口(尤其是
9876
(NameServer),10909
(Broker HA),10911
(Broker 监听),10912
(Broker HA))。 - 日志文件: 所有日志默认输出到
~/logs/rocketmqlogs/
目录下,这是排查问题的首要位置。 - 生产环境: 此指南适用于 本地开发/测试 。生产环境部署涉及多节点集群、持久化优化、高可用配置、安全(ACL)、监控等复杂配置,请务必参考 官方文档。
- RocketMQ 5.x: 5.x 版本引入了 Proxy 模式等新特性。本指南使用的是经典的 NameServer + Broker 架构启动方式 (
mqnamesrv
&mqbroker
),这也是最常用和兼容性最好的方式。Proxy 模式的启动命令不同 (bin/mqproxy
),请参考 5.x 文档。 - Dashboard (控制台): 强烈建议安装 RocketMQ Dashboard 进行可视化管理和监控。这是一个独立的 Java Web 应用,需要单独下载部署。参考其 GitHub 仓库 的 README 进行安装配置。
按照以上步骤操作,你应该能在 macOS 上顺利运行起 RocketMQ 进行开发和测试。💻