当前位置: 首页 > article >正文

RocketMQ 实战:在 macOS 上安装与前端访问全流程指南

RocketMQ 是一款高性能的分布式消息队列中间件,在微服务架构中得到了广泛应用。本文将引导您在 macOS 上安装 RocketMQ,并使用 RocketMQ 控制台进行前端访问和管理。同时,我们将涵盖如何优雅地关闭相关服务,以确保系统的稳定性。

1. 准备工作

在开始之前,确保您的 macOS 系统已经具备以下组件:

  • Java 运行时环境 (JRE):RocketMQ 依赖于 Java 运行环境,您可以通过以下命令检查 Java 是否已安装:

    java -version
    

    如果未安装 Java,可以使用 Homebrew 进行安装:

    brew install openjdk@11
    
  • Homebrew:macOS 常用的包管理工具,可以用它来简化软件安装过程。若尚未安装 Homebrew,可以在终端中执行以下命令进行安装:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    

2. 安装 RocketMQ

虽然 RocketMQ 尚未提供直接的 Homebrew 安装方式,但我们可以通过 Apache 官方网站手动下载和安装。

  1. 下载 RocketMQ:从 Apache 官方网站下载最新版本的 RocketMQ(本文以 4.9.4 版本为例)。

    wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
    
  2. 解压文件

    unzip rocketmq-all-4.9.4-bin-release.zip
    
  3. 进入 RocketMQ 目录

    cd rocketmq-all-4.9.4-bin-release
    

3. 启动 Name Server 和 Broker

RocketMQ 需要先启动 Name Server(名称服务器)来管理和发现 Broker。接下来启动 Broker 来接收和处理消息。

  1. 启动 Name Server

    nohup sh bin/mqnamesrv &
    

    可以通过查看日志文件来确认 Name Server 是否成功启动:

    tail -f ~/logs/rocketmqlogs/namesrv.log
    
  2. 启动 Broker:在确保 Name Server 启动成功后,执行以下命令来启动 Broker:

    nohup sh bin/mqbroker -n localhost:9876 &
    

    使用以下命令查看 Broker 启动日志,以确认启动状态:

    tail -f ~/logs/rocketmqlogs/broker.log
    

4. 安装和启动 RocketMQ 控制台

为了更方便地管理和监控 RocketMQ,我们可以安装 RocketMQ 控制台,这是一款基于 Web 的管理工具。

  1. 下载 RocketMQ 控制台:从 GitHub 仓库克隆 RocketMQ 控制台的代码:

    git clone https://github.com/apache/rocketmq-dashboard.git
    
  2. 进入项目目录

    cd rocketmq-dashboard
    
  3. 构建项目:使用 Maven 进行项目构建。确保您的系统已安装 Maven(可通过 Homebrew 安装:brew install maven)。

    mvn clean package -DskipTests
    
  4. 启动控制台:使用以下命令启动 RocketMQ 控制台,将 Name Server 地址指定为 localhost:9876

    java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar --rocketmq.config.namesrvAddr=localhost:9876
    

5. 访问 RocketMQ 控制台

RocketMQ 控制台默认运行在本地的 8080 端口。您可以在浏览器中输入以下地址访问控制台:

http://localhost:8080

进入控制台后,您可以进行以下操作:

  • 查看集群信息
  • 查看和管理 Broker 状态
  • 创建和管理 Topic(主题)
  • 查看消息的生产与消费情况

6. 测试消息发送和消费

  1. 创建 Topic:在 RocketMQ 控制台上,选择“Topic 管理”并创建一个新的 Topic。

  2. 发送消息:使用 RocketMQ 提供的工具类向 Topic 发送测试消息。进入 RocketMQ 安装目录,执行以下命令:

    export NAMESRV_ADDR=localhost:9876
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
    
  3. 消费消息:使用以下命令消费测试消息:

    export NAMESRV_ADDR=localhost:9876
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
    

通过这些步骤,您可以验证 RocketMQ 集群的消息发送与消费功能是否正常工作。

7. 优雅地关闭 RocketMQ Name Server 和 Broker

在关闭 RocketMQ 服务时,应首先关闭 Broker,然后再关闭 Name Server。这是因为 Broker 依赖于 Name Server 的存在,反过来则不然。以下是具体操作步骤和代码:

1. 关闭 Broker
  1. 找到 Broker 进程 ID (PID):

    使用以下命令查找 mqbroker 进程的 PID:

    ps -ef | grep mqbroker
    
  2. 关闭 Broker 进程:

    通过 PID 发送 TERM 信号来优雅地关闭 Broker:

    kill -TERM <PID>
    

    替换 <PID> 为实际的进程 ID。使用 TERM 信号可以让进程有机会清理资源并完成当前正在处理的任务,从而优雅地关闭。

    或者直接运行 RocketMQ 提供的关闭脚本:

    sh bin/mqshutdown broker
    
2. 关闭 Name Server
  1. 找到 Name Server 进程 ID (PID):

    使用以下命令查找 mqnamesrv 进程的 PID:

    ps -ef | grep mqnamesrv
    
  2. 关闭 Name Server 进程:

    使用 kill 命令发送 TERM 信号:

    kill -TERM <PID>
    

    替换 <PID> 为 Name Server 的进程 ID。

    或者使用 RocketMQ 提供的关闭脚本:

    sh bin/mqshutdown namesrv
    

8. 确认服务是否关闭

在执行关闭操作后,可以检查相关进程是否已经成功关闭:

ps -ef | grep mqbroker
ps -ef | grep mqnamesrv

如果没有输出,说明进程已经成功关闭。

9. 总结

通过本文的指导,您已经在 macOS 上成功安装并配置了 RocketMQ,并通过 RocketMQ 控制台实现了对 RocketMQ 集群的前端访问和管理。同时,我们还介绍了如何优雅地关闭 Name Server 和 Broker,确保系统的稳定性。

进一步的操作可以包括配置更多的 Broker 节点、优化消息消费策略、集成更多的消息处理逻辑等。祝您在使用 RocketMQ 的过程中取得更加卓越的表现!


http://www.kler.cn/a/287628.html

相关文章:

  • Kafka简单实践
  • 如何使用正则表达式验证域名
  • RTSP播放器EasyPlayer.js播放器UniApp或者内嵌其他App里面webview需要截图下载
  • web——upload-labs——第三关——后缀黑名单绕过
  • Vue中的导航守卫有哪三种?分别有什么作用
  • 2024140读书笔记|《作家榜名著:生如夏花·泰戈尔经典诗选》——你从世界的生命的溪流浮泛而下,终于停泊在我的心头
  • nginx 部署前端vue项目
  • 【Java】IDEA从零到一使用statemachine状态机模拟订单 (图解)
  • 9月2日记
  • 【Transformer】基本概述
  • iPhone出现4013错误的和解决方案分享
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.08.10-2024.08.15
  • 使用twilio向手机发短信做监控报警
  • 算法之哈希表
  • 地级市地理相邻矩阵(地级市名称版、行政区划代码版)
  • Microsoft DirectML 现在支持 Copilot+ PC 和 WebNN
  • 在繁忙工作环境中提升开发效率:JetBrains IntelliJ IDEA 的应用
  • Python中的函数艺术:解锁高效编程的秘密
  • 零差云控电机ubuntu+IGH调试记录
  • 【Linux】POSIX版本 信号量
  • 质量属性场景-系统架构师(六十)
  • Datawhale X 李宏毅苹果书 AI夏令营 Task3打卡
  • 后端开发刷题 | 面试篇3
  • DASK==延迟对象delayed
  • QT QGraphicsView实现预览图片显示缩略图功能
  • Protocol Buffers