[macos]rocketmq(安装)

13 阅读5分钟

在 macOS 上安装、部署和启动 Apache RocketMQ 与在 Linux 上非常相似。以下是详细的步骤指南:

📦 核心步骤概览

  1. 安装前提条件
  2. 下载 RocketMQ
  3. 解压安装包
  4. (可选)配置调整
  5. 启动 NameServer
  6. 启动 Broker
  7. 测试验证
  8. 停止服务

📍 详细步骤

1. 安装前提条件

  • Java Development Kit (JDK): RocketMQ 需要 JDK 1.8 或更高版本。
    • 确认安装: 打开终端,运行 java -version
    • 如果未安装,请从 Oracle JDKOpenJDK 下载并安装合适的 macOS 版本。
  • 终端 (Terminal): 你将使用 终端.app 执行所有命令。

2. 下载 RocketMQ

  • 访问 Apache RocketMQ 官方下载页面:
    • 官方推荐: rocketmq.apache.org/download - 选择最新稳定版本(如 5.x.x)。
    • 镜像站点: 如果官方下载慢,可以使用 Apache 镜像站点(链接通常在下载页面上提供)。
  • 下载 二进制发行版 (Binary Distribution)。文件名通常类似于 rocketmq-all-5.x.x-bin-release.zip

3. 解压安装包

  • 打开终端。
  • 使用 cd 命令切换到存放下载 ZIP 文件的目录(例如 ~/Downloads)。
  • 使用 unzip 命令解压文件:
    unzip rocketmq-all-5.x.x-bin-release.zip
    
  • 将解压后的目录移动到你希望安装的位置(例如你的用户目录或 /usr/local)。这一步可选,但推荐:
    mv 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 主目录:
    cd ~/rocketmq # 或 cd /usr/local/rocketmq
    

4. (可选)配置调整

  • 调整 JVM 内存设置 (重要!): macOS(尤其是开发机)可能没有足够的空闲内存运行 RocketMQ 默认的较大堆设置。编辑以下两个脚本:
    • runserver.sh (用于 NameServer):
      vi bin/runserver.sh # 或者使用你喜欢的文本编辑器 (nano, vscode 等)
      
      找到类似 JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g ..." 的行。将 -Xms2g -Xmx2g 改为更小的值(例如 -Xms512m -Xmx512m-Xms1g -Xmx1g)。
    • runbroker.sh (用于 Broker):
      vi 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)。
  • 执行启动命令:
    nohup sh bin/mqnamesrv &
    
    • nohup: 确保即使关闭终端窗口,进程也不会终止(可选,但对于后台运行很有用)。
    • sh bin/mqnamesrv: 运行 NameServer 启动脚本。
    • &: 在后台运行。
  • 检查启动日志 确认是否成功:
    tail -f ~/logs/rocketmqlogs/namesrv.log
    
    看到关键日志 The Name Server boot success. serializeType=JSON 即表示启动成功。按 Ctrl+C 停止查看日志。

6. 启动 Broker

  • Broker 是存储和传输消息的核心组件,它需要连接到已运行的 NameServer。
  • 第二个终端窗口 中,确保位于 RocketMQ 主目录。
  • 执行启动命令:
    nohup sh bin/mqbroker -n localhost:9876 &
    
    • sh bin/mqbroker: 运行 Broker 启动脚本。
    • -n localhost:9876: 指定 NameServer 的地址和端口(9876 是 NameServer 的默认端口)。如果 NameServer 不在本机或端口不同,需修改此地址。
    • &: 在后台运行。
  • 检查启动日志 确认是否成功:
    tail -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:
    sh bin/mqadmin updateTopic -n localhost:9876 -t TestTopic -c DefaultCluster
    
    • updateTopic: 创建或更新 Topic。
    • -n localhost:9876: NameServer 地址。
    • -t TestTopic: 要创建的 Topic 名称(可自定义)。
    • -c DefaultCluster: 所属集群名称(默认即可)。
  • 使用自带 Producer 发送消息:
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
    
    这个脚本会连接到本地的 NameServer (localhost:9876),向 TopicTest 这个默认的 Topic 发送大量测试消息。你会在控制台看到发送成功的日志 SendResult [sendStatus=SEND_OK, ...]
  • 使用自带 Consumer 消费消息:
    sh 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),运行:
    sh 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),运行:
    sh bin/mqshutdown namesrv
    
    查看 namesrv.log 日志尾部确认 The Name Server shutdown successfully

📌 重要注意事项

  1. 内存设置: 这是 macOS 本地部署最常见的问题来源。务必根据你的机器内存大小调整 runserver.shrunbroker.sh 中的 -Xms-Xmx 参数,否则大概率启动失败。
  2. 防火墙/安全软件: 确保 macOS 防火墙或其他安全软件没有阻止 RocketMQ 使用的端口(尤其是 9876 (NameServer), 10909 (Broker HA), 10911 (Broker 监听), 10912 (Broker HA))。
  3. 日志文件: 所有日志默认输出到 ~/logs/rocketmqlogs/ 目录下,这是排查问题的首要位置。
  4. 生产环境: 此指南适用于 本地开发/测试。生产环境部署涉及多节点集群、持久化优化、高可用配置、安全(ACL)、监控等复杂配置,请务必参考 官方文档
  5. RocketMQ 5.x: 5.x 版本引入了 Proxy 模式等新特性。本指南使用的是经典的 NameServer + Broker 架构启动方式 (mqnamesrv & mqbroker),这也是最常用和兼容性最好的方式。Proxy 模式的启动命令不同 (bin/mqproxy),请参考 5.x 文档。
  6. Dashboard (控制台): 强烈建议安装 RocketMQ Dashboard 进行可视化管理和监控。这是一个独立的 Java Web 应用,需要单独下载部署。参考其 GitHub 仓库 的 README 进行安装配置。

按照以上步骤操作,你应该能在 macOS 上顺利运行起 RocketMQ 进行开发和测试。💻