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

devtools/2024/9/16 19:56:01/ 标签: 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.ppmy.cn/devtools/105636.html

相关文章

【软件技巧】第36课,软件逆向安全工程师之堆栈操作指令,每天5分钟学习逆向吧!

在x86汇编语言中&#xff0c;堆栈操作指令用于处理程序的堆栈&#xff08;stack&#xff09;。堆栈是一种后进先出&#xff08;LIFO&#xff09;的数据结构&#xff0c;用于存储临时数据、函数参数、返回地址和局部变量等。以下是一些常用的堆栈操作指令&#xff1a; PUSH: 将…

java环境变量配置方法

在 Windows 操作系统上配置 Java 环境变量是开发 Java 程序的第一步。正确配置环境变量可以让系统在命令行中找到 Java 编译器&#xff08;javac&#xff09;和运行时&#xff08;java&#xff09;。以下是详细的配置步骤&#xff1a; 一、准备工作 安装 JDK&#xff1a; 首先…

开发指南058-JPA多数据源

一般情况下&#xff0c;一个微服务只链接一个数据库&#xff0c;但是不排除有些情况下需要链多个库。链多个库比较复杂&#xff0c;介绍如下&#xff1a; 1、nocas中要配置多数据源 白框内为正常的单数据库情况。下面增加标识&#xff08;可以任意起&#xff0c;这里为eva)&…

路由引入(ospf+rip)

1.搭建拓扑图 2.配置接口ip地址

探索电商技术新边界:深入解析电商平台API的实战应用与测试价值

在电商行业的快速迭代中&#xff0c;技术成为了推动业务增长的关键力量。电商平台API作为连接前后端、实现系统间高效交互的桥梁&#xff0c;其重要性不言而喻。本文旨在从技术专业的角度&#xff0c;分享电商平台API的实战应用经验&#xff0c;并探讨其测试价值&#xff0c;希…

从K-Means到K-Medoid:聚类算法在缺陷报告分析中的性能比拼与优化探索

本文分享自华为云社区《聚类&#xff1a;k-Means 和 k-Medoid》作者&#xff1a; Uncle_Tom 1. 前言 在《对静态分析缺陷报告进行聚类&#xff0c;以降低维护成本》 提到使用 k-Medoid 通过相似缺陷的聚类&#xff0c;来减少程序员对大量缺陷分析的工作量。 k-Medoid 和传统的…

Spring Cloud Alibaba之 AI

Spring Cloud Alibaba AI 是阿里巴巴基于 Spring Cloud 和 Spring AI 推出的一个微服务解决方案&#xff0c;旨在帮助开发者快速接入并使用阿里云通义系列大模型&#xff0c;从而简化 Java AI 应用程序的开发过程。该解决方案不仅继承了 Spring Cloud Alibaba 的一站式微服务开…

STM32-PWM驱动呼吸灯——HAL库

&#xff08;根据B站up主keysking的STM32教程视频的笔记&#xff09; 【STM32】动画讲解轻松学会STM32的PWM_哔哩哔哩_bilibili 什么是PWM&#xff1f; PWM&#xff0c;全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一种调制技术&#xf…

uniapp APP版本更新

var dtask plus.downloader.createDownload(userl.value, {}, function(d, status) {if (status 200) { // 下载完成-进行安装console.log(下载status, d, status)// console.log("Download success: " d.filename);this.show_update falseplus.runtime.install(…

界面控件Telerik UI for ASP.NET Core 2024 Q2亮点 - AI与UI的融合

Telerik UI for ASP.NET Core是用于跨平台响应式Web和云开发的最完整的UI工具集&#xff0c;拥有超过60个由Kendo UI支持的ASP.NET核心组件。它的响应式和自适应的HTML5网格&#xff0c;提供从过滤、排序数据到分页和分层数据分组等100多项高级功能。 本文将介绍界面组件Teler…

Golang | Leetcode Golang题解之第380题O(1)时间插入、删除和获取随机元素

题目&#xff1a; 题解&#xff1a; type RandomizedSet struct {nums []intindices map[int]int }func Constructor() RandomizedSet {return RandomizedSet{[]int{}, map[int]int{}} }func (rs *RandomizedSet) Insert(val int) bool {if _, ok : rs.indices[val]; ok {r…

【pyhton】python如何实现将word等文档中的文字转换成语音

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

PHPStorm调试功能配置详细教程

下面我将为您准备一份从浅入深、理论与实践结合的 PHPStorm 调试功能配置教程。我们将逐步介绍如何在 PHPStorm 中设置和使用调试工具。 第 1 章&#xff1a;PHPStorm 调试入门 1.1 什么是调试&#xff1f; 调试是软件开发中的一项重要技能&#xff0c;它帮助开发者找出程序…

df保存为excel

df保为excel pandas的dataframe保存为excel&#xff0c;设置列宽&#xff0c;行高和自动换行。 from openpyxl.styles import Alignment, Font from openpyxl.utils.dataframe import dataframe_to_rows from openpyxl.workbook import Workbookdef save_excel(df, filename,…

jpg图片怎么转换成png?值得推荐给大家的几种转换方法

jpg图片怎么转换成png&#xff1f;将jpg图像转换为png格式可以显著提升图像的质量和清晰度&#xff0c;并满足一些特殊需求&#xff0c;例如透明背景。png格式采用无损压缩&#xff0c;这意味着图像在转换过程中不会丢失任何细节或质量&#xff0c;相比于jpg的有损压缩&#xf…

416.分割等和子集

416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和…

如何轻松的步入编程的第一课?相信你就是那个伟大的天才!

第一次编程&#xff0c;会让初学者感到既兴奋又有些紧张。以下是一些建议 明确学习目标&#xff1a;首先&#xff0c;思考你为什么想学编程。是为了职业发展、兴趣爱好、还是仅仅想了解新技术&#xff1f;明确的目标能帮你保持学习的动力。选择合适的编程语言&#xff1a;对于…

5 - Shell编程之正则表达式与文本处理工具

目录 一、正则表达式 1.概述 2.基本正则表达式 2.1 元字符&#xff08;字符匹配&#xff09; 2.2 表示匹配次数 2.3 位置锚定 3.扩展正则表达式 二、文本处理器 1. sort 命令 - 对文本文件进行排序&#xff0c;默认以字母排序 2. uniq 命令 - 找出或删除文本文件中连续…

【Qt】Spacer

Spacer 在使用布局管理的时候&#xff0c;如果需要在控件之间添加一段空白&#xff0c;就可以使用QSpacerItem来表示。 核心属性 属性说明 width 宽度 height ⾼度 hData ⽔平⽅向的 sizePolicy QSizePolicy::Ignored : 忽略控件的尺⼨&#xff0c;不对布局产⽣影响。 QS…

深度强化学习算法(六)(附带MATLAB程序)

深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;结合了深度学习和强化学习的优点&#xff0c;能够处理具有高维状态和动作空间的复杂任务。它的核心思想是利用深度神经网络来逼近强化学习中的策略函数和价值函数&#xff0c;从而提高学习能力和决策效率…