[macos]rocketmq(安装)

在 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 命令解压文件:

    bash 复制代码
    unzip rocketmq-all-5.x.x-bin-release.zip
  • 将解压后的目录移动到你希望安装的位置(例如你的用户目录或 /usr/local)。这一步可选,但推荐:

    bash 复制代码
    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 主目录:

    bash 复制代码
    cd ~/rocketmq # 或 cd /usr/local/rocketmq

4. (可选)配置调整

  • 调整 JVM 内存设置 (重要!): macOS(尤其是开发机)可能没有足够的空闲内存运行 RocketMQ 默认的较大堆设置。编辑以下两个脚本:
    • runserver.sh (用于 NameServer):

      bash 复制代码
      vi bin/runserver.sh # 或者使用你喜欢的文本编辑器 (nano, vscode 等)

      找到类似 JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g ..." 的行。将 -Xms2g -Xmx2g 改为更小的值(例如 -Xms512m -Xmx512m-Xms1g -Xmx1g)。

    • runbroker.sh (用于 Broker):

      bash 复制代码
      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)。

  • 执行启动命令:

    bash 复制代码
    nohup sh bin/mqnamesrv &
    • nohup: 确保即使关闭终端窗口,进程也不会终止(可选,但对于后台运行很有用)。
    • sh bin/mqnamesrv: 运行 NameServer 启动脚本。
    • &: 在后台运行。
  • 检查启动日志 确认是否成功:

    bash 复制代码
    tail -f ~/logs/rocketmqlogs/namesrv.log

    看到关键日志 The Name Server boot success. serializeType=JSON 即表示启动成功。按 Ctrl+C 停止查看日志。

6. 启动 Broker

  • Broker 是存储和传输消息的核心组件,它需要连接到已运行的 NameServer。

  • 第二个终端窗口 中,确保位于 RocketMQ 主目录。

  • 执行启动命令:

    bash 复制代码
    nohup sh bin/mqbroker -n localhost:9876 &
    • sh bin/mqbroker: 运行 Broker 启动脚本。
    • -n localhost:9876: 指定 NameServer 的地址和端口(9876 是 NameServer 的默认端口)。如果 NameServer 不在本机或端口不同,需修改此地址。
    • &: 在后台运行。
  • 检查启动日志 确认是否成功:

    bash 复制代码
    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:

    bash 复制代码
    sh bin/mqadmin updateTopic -n localhost:9876 -t TestTopic -c DefaultCluster
    • updateTopic: 创建或更新 Topic。
    • -n localhost:9876: NameServer 地址。
    • -t TestTopic: 要创建的 Topic 名称(可自定义)。
    • -c DefaultCluster: 所属集群名称(默认即可)。
  • 使用自带 Producer 发送消息:

    bash 复制代码
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

    这个脚本会连接到本地的 NameServer (localhost:9876),向 TopicTest 这个默认的 Topic 发送大量测试消息。你会在控制台看到发送成功的日志 SendResult [sendStatus=SEND_OK, ...]

  • 使用自带 Consumer 消费消息:

    bash 复制代码
    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),运行:

    bash 复制代码
    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),运行:

    bash 复制代码
    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 进行开发和测试。💻

相关推荐
不太厉害的程序员3 分钟前
NC65配置xml找不到Bean
xml·java·后端·eclipse
不被定义的程序猿4 分钟前
Golang 在 Linux 平台上的并发控制
开发语言·后端·golang
AntBlack24 分钟前
Python : AI 太牛了 ,撸了两个 Markdown 阅读器 ,谈谈使用感受
前端·人工智能·后端
mikes zhang1 小时前
Flask文件上传与异常处理完全指南
后端·python·flask
Pitayafruit1 小时前
跟着大厂学架构01:如何利用开源方案,复刻B站那套“永不崩溃”的评论系统?
spring boot·分布式·后端
方圆想当图灵2 小时前
深入理解软件设计:领域驱动设计 DDD
后端·架构
excel2 小时前
MySQL 9 在 Windows 上使用 mysqld --initialize-insecure 无响应的排查与解决方案
后端
你怎么知道我是队长2 小时前
GO语言---defer关键字
开发语言·后端·golang
方圆想当图灵2 小时前
深入理解软件设计:什么是好的架构?
后端·架构·代码规范
love530love3 小时前
是否需要预先安装 CUDA Toolkit?——按使用场景分级推荐及进阶说明
linux·运维·前端·人工智能·windows·后端·nlp