Ubuntu 上安装和配置 Apache RocketMQ 4.7.1
在 Ubuntu 上安装和配置 Apache RocketMQ 4.7.1 需要以下步骤。RocketMQ 是一个分布式消息队列系统,通常需要安装 Namesrv(Name Server)和 Broker 组件。
1. 系统准备
更新系统和安装依赖
运行以下命令更新系统并安装必要的依赖项:
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-8-jdk wget unzip
RocketMQ 4.7.1 要求 JDK 1.8,确保安装正确版本的 Java:
java -version
# 确保输出显示 Java 8
2. 下载 RocketMQ 4.7.1
从 Apache 官方下载 RocketMQ 4.7.1:
wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
解压文件:
unzip rocketmq-all-4.7.1-bin-release.zip
mv rocketmq-all-4.7.1-bin-release /opt/rocketmq
3. 配置环境变量
为 RocketMQ 添加环境变量,方便使用命令:
echo "export ROCKETMQ_HOME=/opt/rocketmq" >> ~/.bashrc
echo "export PATH=\$PATH:\$ROCKETMQ_HOME/bin" >> ~/.bashrc
source ~/.bashrc
验证配置:
echo $ROCKETMQ_HOME
4. 启动 Name Server
-
进入 RocketMQ 目录:
cd /opt/rocketmq -
启动 Name Server:
sh bin/mqnamesrv > logs/namesrv.log 2>&1 & -
检查 Name Server 是否启动成功:
查看日志文件是否有启动成功的信息:
tail -f logs/namesrv.log如果日志中包含
The Name Server boot success,说明 Name Server 启动成功。
5. 启动 Broker
-
启动 Broker:
sh bin/mqbroker -n localhost:9876 > logs/broker.log 2>&1 &sh bin/mqbroker -n 18.142.120.189:9876 > logs/broker.log 2>&1 &注意:
-n localhost:9876表示使用本地的 Name Server 地址。
namesrvAddr=10.1.1.117:9876
brokerIP1=10.1.1.117nohup /usr/local/rocketmq-5.0.0/bin/mqnamesrv & nohup /usr/local/rocketmq-5.0.0/bin/mqbroker -c /usr/local/rocketmq-5.0.0/conf/broker.conf &nohup sh bin/mqnamesrv > logs/namesrv.log 2>&1 &tail -f -n 20 logs/namesrv.lognohup sh bin/mqbroker -n 13.229.140.142:9876 autoCreateTopicEnable=true -c conf/broker.conf > logs/broker.log 2>&1 &nohup sh bin/mqbroker -n 13.229.140.142:9876 -c conf/broker.conf > logs/broker.log 2>&1 &nohup sh bin/mqbroker -n 127.0.0.1:9876 -c conf/broker.conf > logs/broker.log 2>&1 &nohup sh bin/mqbroker autoCreateTopicEnable=true -c conf/broker.conf > logs/broker.log 2>&1 &nohup sh bin/mqbroker -c conf/broker.conf > logs/broker.log 2>&1 &tail -f -n 20 logs/broker.lognohup sh bin/mqbroker -c conf/broker.conf &
tail -f -n 100 ~/logs/rocketmqlogs/broker.log
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
设置 Broker 的内网地址
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerIP1=172.31.14.54
brokerIP2=13.229.140.142
autoCreateTopicEnable=truesudo sh bin/mqshutdown broker
sudo sh bin/mqshutdown namesrvps aux | grep rocketmqsudo netstat -anp | grep 9876
sudo nano /opt/rocketmq-all-4.9.6-bin-release/conf/broker.confsh bin/mqadmin brokerStatus -b 172.31.14.54:10911
sh bin/mqadmin clusterList -n 172.31.14.54:9876
sh bin/mqadmin brokerStatus -b 13.229.140.142:10911
sh bin/mqadmin clusterList -n 13.229.140.142:9876sudo nohup sh bin/mqnamesrv > /opt/rocketmq-all-4.9.6-bin-release/logs/namesrv.log 2>&1 &
tail -f -n 20 logs/namesrv.log
sudo nohup sh bin/mqbroker -n 172.31.14.54:9876 -c /opt/rocketmq-all-4.9.6-bin-release/conf/broker.conf > /opt/rocketmq-all-4.9.6-bin-release/logs/broker.log 2>&1 &
tail -f -n 20 logs/broker.lognohup sh bin/mqnamesrv > /home/rocketmq-all-4.7.1-bin-release/logs/namesrv.log 2>&1 &
tail -f -n 20 logs/namesrv.log
nohup sh bin/mqbroker -n 192.168.110.66:9876 -c /home/rocketmq-all-4.7.1-bin-release/conf/broker.conf > /home/rocketmq-all-4.7.1-bin-release/logs/broker.log 2>&1 &
tail -f -n 20 logs/broker.logsh bin/mqadmin brokerStatus -b 192.168.110.66:10911
sh bin/mqadmin clusterList -n 192.168.110.66:9876nohup sh bin/mqnamesrv -Djava.net.preferIPv4Stack=true > logs/namesrv.log 2>&1 &export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
-
检查 Broker 是否启动成功:
查看日志文件:
tail -f logs/broker.log如果日志中包含
The broker[brokerName, brokerId] boot success,说明 Broker 启动成功。
6. 测试 RocketMQ
RocketMQ 自带了测试脚本,可以验证安装是否成功。
-
发送测试消息:
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer -
接收测试消息:
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
如果 Producer 和 Consumer 都能正常运行,说明 RocketMQ 已经安装成功。
7. 设置为系统服务(可选)
可以将 RocketMQ 的 Name Server 和 Broker 设置为系统服务,以便开机自启。
Name Server 服务配置
创建服务文件:
sudo nano /etc/systemd/system/rocketmq-namesrv.service
写入以下内容:
[Unit]
Description=RocketMQ Name Server
After=network.target[Service]
Type=forking
ExecStart=/opt/rocketmq/bin/mqnamesrv
ExecStop=/bin/kill -s TERM $MAINPID
User=root
Restart=always[Install]
WantedBy=multi-user.target
Broker 服务配置
创建服务文件:
sudo nano /etc/systemd/system/rocketmq-broker.service
写入以下内容:
[Unit]
Description=RocketMQ Broker
After=network.target rocketmq-namesrv.service[Service]
Type=forking
ExecStart=/opt/rocketmq/bin/mqbroker -n localhost:9876
ExecStop=/bin/kill -s TERM $MAINPID
User=root
Restart=always[Install]
WantedBy=multi-user.target
启动服务
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable rocketmq-namesrv
sudo systemctl enable rocketmq-brokersudo systemctl start rocketmq-namesrv
sudo systemctl start rocketmq-brokersudo systemctl stop rocketmq-namesrv
sudo systemctl stop rocketmq-broker
检查服务状态:
sudo systemctl status rocketmq-namesrv
sudo systemctl status rocketmq-broker
8. Web Console(可选)
如果需要可视化界面,可以安装 RocketMQ 的 Web Console。
下载 Web Console
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
启动 Web Console
编译并运行 Web Console(需要 Maven 和 JDK 1.8):
mvn clean package -DskipTests
java -jar target/rocketmq-console-ng-2.0.0.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876
访问 http://<你的服务器IP>:8080 查看 RocketMQ 的状态。
RocketMQ 4.7.1 已成功在 Ubuntu 上安装并运行!
RocketMQ 4.7.1 运行在 Java 8 上最佳,因此如果你的系统上默认使用的是 Java 11,可能会导致兼容性问题。以下是解决方法:
方法一:降级到 Java 8
-
卸载 Java 11(如果需要):
sudo apt remove openjdk-11-jdk sudo apt autoremove -
安装 Java 8:
sudo apt update sudo apt install openjdk-8-jdk -
验证 Java 版本:
java -version确保显示类似以下内容:
openjdk version "1.8.0_xxx"
方法二:使用 update-alternatives 切换默认版本
如果你同时安装了 Java 8 和 Java 11,可以通过 update-alternatives 命令选择 Java 8:
-
列出已安装的 Java 版本:
sudo update-alternatives --config java -
选择 Java 8:系统会列出所有可用的 Java 版本,你可以通过输入对应编号选择 Java 8。
-
再次验证:
java -version
方法三:指定 Java 环境变量
如果不想改变系统默认 Java 版本,可以在 RocketMQ 的启动脚本中指定 Java 8 的路径:
-
查找 Java 8 安装路径:
sudo update-alternatives --display java你会看到类似以下输出:
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -
修改
runserver.sh和runbroker.sh脚本:
找到 RocketMQ 的安装目录,编辑启动脚本,在顶部添加以下行:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
- 重新启动 RocketMQ:
./bin/mqnamesrv &./bin/mqbroker -n localhost:9876 &
方法四:使用 Docker
如果不想修改系统环境,可以使用官方提供的 Docker 镜像,它已经包含了合适的 Java 环境:
docker pull apache/rocketmq:4.7.1
运行 RocketMQ:
docker run -d --name rmqnamesrv -p 9876:9876 apache/rocketmq:4.7.1 sh mqnamesrv
docker run -d --name rmqbroker -p 10911:10911 -p 10909:10909 --link rmqnamesrv:namesrv apache/rocketmq:4.7.1 sh mqbroker -n namesrv:9876
通过上述方法,你可以在 Ubuntu 上成功运行 RocketMQ 4.7.1。如果仍有问题,可以告诉我具体的报错信息,我会进一步帮助你!
cd /opt/rocketmq-all-4.7.1-bin-release167 ll168 cd bin/169 ll170 nohup sh bin/mqnamesrv &171 ps aux | grep java172 cd ..173 ll174 nohup sh bin/mqnamesrv &175 tail -f ~/logs/rocketmqlogs/namesrv.log176 nohup sh bin/mqbroker -n 192.168.0.57:9876 autoCreateTopicEnable=true -c conf/broker.conf &nohup sh bin/mqbroker -n 13.229.140.142:9876 autoCreateTopicEnable=true -c conf/broker.conf &177 tail -f -n 100 ~/logs/rocketmqlogs/broker.logsh bin/mqshutdown broker
sh bin/mqshutdown namesrv
相关文章:
Ubuntu 上安装和配置 Apache RocketMQ 4.7.1
在 Ubuntu 上安装和配置 Apache RocketMQ 4.7.1 需要以下步骤。RocketMQ 是一个分布式消息队列系统,通常需要安装 Namesrv(Name Server)和 Broker 组件。 1. 系统准备 更新系统和安装依赖 运行以下命令更新系统并安装必要的依赖项ÿ…...
打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?
两个月没有使用vscode编写代码,今天使用的时候发现了以上的问题导致我的vscode无法编写程序,接下来我将本人解决该问题的思路分享给大家。 首先我们要清楚WSL是适用于linux的window的子系统,是一个在Windows 10\11上能够运行原生Linux二进制可…...
Linux(socket网络编程)TCP连接
Linux(socket网络编程)TCP连接 基础文件目录函数系统进程控制函数fork()exec系列函数void abort(void)void assert(int expression)void exit(int status)void _exit(int status)int atexit(void (*func)(void))int on_exit(void (*function)(int,void*)…...
力扣刷题 遍历字符串
根据网上的学习 对遍历字符串 学习了一些自己的见解。给一个字符串组成的句子(带空格或标点),然后对句中单个字符串进行一系列处理的题目 参考链接 1805. 字符串中不同整数的数目 - 力扣(LeetCode) 模版1 s " "; //这里在最后一…...
深度剖析观察者模式:从理论到实战的Java实现
在软件设计中,观察者模式(Observer Pattern) 是一种高频使用的行为型设计模式,它定义了对象之间一对多的依赖关系,使得当一个对象状态改变时,其所有依赖对象(观察者)会自动收到通知并…...
Rust学习总结之所有权(一)
不管是计算机的哪种语言,都有内存的管理方式。主流有两种,一是以C为代表的由开发者来决定申请和释放内存,二是以Python为代表的通过语言本身的垃圾回收机制来自动管理内存。Rust开辟了第三种方式,通过所有权系统管理内存。 Rust所…...
汇编简介常用语法
为什么要有汇编 因为Cortex-A芯片一上电SP指针还没初始化,C环境还没准备 好,所以肯定不能运行C代码,必须先用汇编语言设置好C环境,比如初始化DDR、设置SP 指针等等,当汇编把C环境设置好了以后才可以运行C代码 GNU语法…...
xtquant库在量化交易中的安装与实战应用
xtquant库在量化交易中的安装与实战应用 技术背景与应用场景 在量化交易领域,xtquant库作为迅投官方开发的Python包,扮演着至关重要的角色。它主要用于与MiniQMT通信,使得开发者能够获取MiniQMT中的数据,并下达交易指令。通过xt…...
ANR学习
一、ANR 概述 ANR 是 Android 系统用于监控应用是否及时响应的关键机制。形象地说,如同设置定时炸弹场景:系统的中控系统(system_server 进程)启动倒计时,若应用进程在规定时间内未完成特定任务,中控系统将…...
前端知识速记--JS篇:instanceof
前端知识速记–JS篇:instanceof 在JavaScript中,instanceof运算符用于检测一个对象是否是另一个对象的实例。它的基本语法为:obj instanceof Constructor。如果obj是Constructor的实例,它将返回true,否则返回false。这…...
Tcp_socket
Tcp不保证报文完整性(面向字节流) 所以我们需要在应用层指定协议,确保报文完整性 // {json} -> len\r\n{json}\r\n bool Encode(std::string &message) {if(message.size() 0) return false;std::string package std::to_string(m…...
idea插件开发,如何获取idea设置的系统语言
手打不易,如果转摘,请注明出处! 注明原文:https://zhangxiaofan.blog.csdn.net/article/details/145578160 版本要求 大于 2024.3 错误用法 网上有的说使用:UIUtil com.intellij.util.ui.UIUtil 代码示例…...
< 自用文儿 > 在 Ubuntu 24 卸载 Docker 应用软件与运行的容器
环境: Host: usw OS: Ubuntu 24.04 TLS 目标: 卸载在运行的 Docker APP。 (上运行了一个 container: 可以在线看 WSJ RSS 新闻,都 docker 预装两个网口,今天发现路由表有些看不懂,决定卸载) 卸载 Dock…...
基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)
基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强,智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备,能够实时采集用户的腰部健康数据,如姿势、运动…...
MySQL InnoDB引擎 MVCC
MVCC(Multi-Version Concurrency Control)即多版本并发控制,是 MySQL 的 InnoDB 存储引擎实现并发控制的一种重要技术。它在很多情况下避免了加锁操作,从而提高了数据库的并发性能。 一、原理 MVCC 的核心思想是通过保存数据在某…...
深入解析 STM32 GPIO:结构、配置与应用实践
理解 GPIO 的工作原理和配置方法是掌握 STM32 开发的基础,后续的外设(如定时器、ADC、通信接口)都依赖于 GPIO 的正确配置。 目录 一、GPIO 的基本概念 二、GPIO 的主要功能 三、GPIO 的内部结构 四、GPIO 的工作模式 1. 输入模式 2. 输…...
【Elasticsearch】管道聚合
管道聚合就是在已有聚合结果之上在进行聚合,管道聚合是针对于聚合的聚合 在 Elasticsearch 中,管道聚合(Pipeline Aggregations)是一种特殊的聚合类型,用于对其他聚合的结果进行进一步的计算和处理,而不是直…...
Python的那些事第十八篇:框架与算法应用研究,人工智能与机器学习
人工智能与机器学习:框架与算法应用研究 摘要 本文深入探讨了人工智能与机器学习领域的核心框架和技术,包括TensorFlow、PyTorch和Scikit-learn库。文章首先介绍了TensorFlow和PyTorch的安装与配置方法,详细阐述了它们的基础概念,…...
【大数据安全分析】为什么要用大数据技术进行安全分析?
在当今数字化浪潮的推动下,安全运营领域犹如一片广袤且复杂的战场。由于其涵盖范围极为宽泛,为了能更深入、精准地探讨相关内容,将目光聚焦于大数据安全分析方向显得尤为必要。一方面,大数据安全分析在安全运营领域占据着举足轻重的地位;另一方面,倘若自身对该领域较为熟…...
java微服务常用技术
Spring Cloud Alibaba 1 系统架构演进 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。 1.1 单体架构 早期的软件系统通常是基于单体应用架构设计的,也就是将整个系统作为一个单一的、可执行的应用程序来构建和维护…...
【Qt 常用控件】多元素控件(QListWidget、QTabelWidgt、QTreeWidget)
**View和**Widget的区别? **View的实现更底层,**Widget是基于**View封装实现的更易用的类型。 **View使用MVC结构 MVC是软件开发中 经典的 软件结构 组织形式,软件设计模式。 M(model)模型。管理应用程序的核心数据和…...
ubuntu文件同步
1. 使用 rsync 同步文件 rsync 是一个常用的文件同步工具,可以在本地或远程系统之间同步文件和目录。 基本用法: rsync -avz /源目录/ 目标目录/-a:归档模式,保留文件属性。-v:显示详细输出。-z:压缩传输…...
解决VsCode的 Vetur 插件has no default export Vetur问题
文章目录 前言1.问题2. 原因3. 解决其他 前言 提示: 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…...
DeepSeek本地部署详细指南
DeepSeek本地部署详细指南 随着人工智能技术的飞速发展,本地部署大模型的需求也日益增加。DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私。以下是…...
DNS污染:网络世界的“隐形劫持”与防御
在互联网的底层架构中,DNS(域名系统)如同数字世界的“导航员”,将用户输入的域名翻译成机器可读的IP地址。然而,DNS污染(DNS Poisoning)正像一场无声的“地址篡改”危机,威胁着全球网…...
AF3 superimpose函数解读
AlphaFold3 superimpose函数通过使用SVD最小化RMSD,将坐标叠加到参考上,在蛋白质结构预测中用于比较预测结构与真实结构的相似性。 源代码: from src.utils.geometry.alignment import weighted_rigid_align from src.utils.geometry.vect…...
python制作自己的一款Markdowm格式消除工具
01 引言 在日常使用 Markdown 编写文档时,我们有时会需要将 Markdown 格式的文本转换为纯文本,去除其中的各种标记符号,如标题符号、列表符号、代码块标记等。手动去除这些标记不仅效率低下,还容易出错。本文将介绍如何使用 Pyt…...
【C#零基础从入门到精通】(三)——C#变量和数据类型详解
【C#零基础从入门到精通】(三)——C#变量和数据类型详解 数据类型 在 C# 中,数据类型是对数据进行分类的方式,它定义了变量可以存储的数据的种类、范围以及可以对这些数据执行的操作。C# 的数据类型主要分为值类型、引用类型和指针类型(指针类型通常在不安全代码中使用),…...
如何从头训练大语言模型: A simple technical report
今天来快速捋一下路线,写个简短的technical report,更多是原理介绍性的。按我个人理解,从最简单的部分开始,逐步过渡到最繁复的环节: 模型架构-> Pretrain -> Post-Train -> Infra -> 数据侧。再掺杂一些杂项…...
gitlab无法登录问题
在我第一次安装gitlab的时候发现登录页面是 正常的页面应该是 这种情况的主要原因是不是第一次登录,所以我们要找到原先的密码 解决方式: [rootgitlab ~]# vim /etc/gitlab/initial_root_password# WARNING: This value is valid only in the followin…...
