Ubuntu 上安装和配置 Apache RocketMQ 4.7.1

news2025/2/13 5:33:27

在 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

  1. 进入 RocketMQ 目录:

    cd /opt/rocketmq
    
  2. 启动 Name Server:

    sh bin/mqnamesrv > logs/namesrv.log 2>&1 &
    
  3. 检查 Name Server 是否启动成功:

    查看日志文件是否有启动成功的信息:

    tail -f logs/namesrv.log
    

    如果日志中包含 The Name Server boot success,说明 Name Server 启动成功。


5. 启动 Broker

  1. 启动 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.117

nohup /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.log

nohup 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.log

nohup 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=true







sudo sh bin/mqshutdown broker
sudo sh bin/mqshutdown namesrv

ps aux | grep rocketmq


sudo netstat -anp | grep 9876
sudo nano /opt/rocketmq-all-4.9.6-bin-release/conf/broker.conf

sh 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:9876



sudo 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.log





nohup 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.log


sh bin/mqadmin brokerStatus -b 192.168.110.66:10911
sh bin/mqadmin clusterList -n 192.168.110.66:9876






















nohup 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


  1. 检查 Broker 是否启动成功:

    查看日志文件:

    tail -f logs/broker.log
    

    如果日志中包含 The broker[brokerName, brokerId] boot success,说明 Broker 启动成功。


6. 测试 RocketMQ

RocketMQ 自带了测试脚本,可以验证安装是否成功。

  1. 发送测试消息:

    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
    
  2. 接收测试消息:

    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-broker

sudo systemctl start rocketmq-namesrv
sudo systemctl start rocketmq-broker

sudo 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

  1. 卸载 Java 11(如果需要):

    sudo apt remove openjdk-11-jdk
    sudo apt autoremove
    
  2. 安装 Java 8

    sudo apt update
    sudo apt install openjdk-8-jdk
    
  3. 验证 Java 版本

    java -version
    

    确保显示类似以下内容:

    openjdk version "1.8.0_xxx"
    

方法二:使用 update-alternatives 切换默认版本

如果你同时安装了 Java 8 和 Java 11,可以通过 update-alternatives 命令选择 Java 8:

  1. 列出已安装的 Java 版本

    sudo update-alternatives --config java
    
  2. 选择 Java 8:系统会列出所有可用的 Java 版本,你可以通过输入对应编号选择 Java 8。

  3. 再次验证

    java -version
    

方法三:指定 Java 环境变量

如果不想改变系统默认 Java 版本,可以在 RocketMQ 的启动脚本中指定 Java 8 的路径:

  1. 查找 Java 8 安装路径

    sudo update-alternatives --display java
    

    你会看到类似以下输出:

    /usr/lib/jvm/java-8-openjdk-amd64/bin/java
    
  2. 修改 runserver.shrunbroker.sh 脚本
    找到 RocketMQ 的安装目录,编辑启动脚本,在顶部添加以下行:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
  1. 重新启动 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-release
  167  ll
  168  cd bin/
  169  ll
  170  nohup sh bin/mqnamesrv &
  171  ps aux | grep java
  172  cd ..
  173  ll
  174  nohup sh bin/mqnamesrv &
  175  tail -f ~/logs/rocketmqlogs/namesrv.log
  176  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.log


sh bin/mqshutdown broker
sh bin/mqshutdown namesrv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2297171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?

两个月没有使用vscode编写代码&#xff0c;今天使用的时候发现了以上的问题导致我的vscode无法编写程序&#xff0c;接下来我将本人解决该问题的思路分享给大家。 首先我们要清楚WSL是适用于linux的window的子系统&#xff0c;是一个在Windows 10\11上能够运行原生Linux二进制可…

Linux(socket网络编程)TCP连接

Linux&#xff08;socket网络编程&#xff09;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*)…

Rust学习总结之所有权(一)

不管是计算机的哪种语言&#xff0c;都有内存的管理方式。主流有两种&#xff0c;一是以C为代表的由开发者来决定申请和释放内存&#xff0c;二是以Python为代表的通过语言本身的垃圾回收机制来自动管理内存。Rust开辟了第三种方式&#xff0c;通过所有权系统管理内存。 Rust所…

汇编简介常用语法

为什么要有汇编 因为Cortex-A芯片一上电SP指针还没初始化&#xff0c;C环境还没准备 好&#xff0c;所以肯定不能运行C代码&#xff0c;必须先用汇编语言设置好C环境&#xff0c;比如初始化DDR、设置SP 指针等等&#xff0c;当汇编把C环境设置好了以后才可以运行C代码 GNU语法…

ANR学习

一、ANR 概述 ANR 是 Android 系统用于监控应用是否及时响应的关键机制。形象地说&#xff0c;如同设置定时炸弹场景&#xff1a;系统的中控系统&#xff08;system_server 进程&#xff09;启动倒计时&#xff0c;若应用进程在规定时间内未完成特定任务&#xff0c;中控系统将…

Tcp_socket

Tcp不保证报文完整性&#xff08;面向字节流&#xff09; 所以我们需要在应用层指定协议&#xff0c;确保报文完整性 // {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…

< 自用文儿 > 在 Ubuntu 24 卸载 Docker 应用软件与运行的容器

环境&#xff1a; Host: usw OS: Ubuntu 24.04 TLS 目标: 卸载在运行的 Docker APP。 &#xff08;上运行了一个 container: 可以在线看 WSJ RSS 新闻&#xff0c;都 docker 预装两个网口&#xff0c;今天发现路由表有些看不懂&#xff0c;决定卸载&#xff09; 卸载 Dock…

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强&#xff0c;智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备&#xff0c;能够实时采集用户的腰部健康数据&#xff0c;如姿势、运动…

Python的那些事第十八篇:框架与算法应用研究,人工智能与机器学习

人工智能与机器学习&#xff1a;框架与算法应用研究 摘要 本文深入探讨了人工智能与机器学习领域的核心框架和技术&#xff0c;包括TensorFlow、PyTorch和Scikit-learn库。文章首先介绍了TensorFlow和PyTorch的安装与配置方法&#xff0c;详细阐述了它们的基础概念&#xff0c…

java微服务常用技术

Spring Cloud Alibaba 1 系统架构演进 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。 1.1 单体架构 早期的软件系统通常是基于单体应用架构设计的,也就是将整个系统作为一个单一的、可执行的应用程序来构建和维护…

【Qt 常用控件】多元素控件(QListWidget、QTabelWidgt、QTreeWidget)

**View和**Widget的区别&#xff1f; **View的实现更底层&#xff0c;**Widget是基于**View封装实现的更易用的类型。 **View使用MVC结构 MVC是软件开发中 经典的 软件结构 组织形式&#xff0c;软件设计模式。 M&#xff08;model&#xff09;模型。管理应用程序的核心数据和…

解决VsCode的 Vetur 插件has no default export Vetur问题

文章目录 前言1.问题2. 原因3. 解决其他 前言 提示&#xff1a; 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…

python制作自己的一款Markdowm格式消除工具

01 引言 在日常使用 Markdown 编写文档时&#xff0c;我们有时会需要将 Markdown 格式的文本转换为纯文本&#xff0c;去除其中的各种标记符号&#xff0c;如标题符号、列表符号、代码块标记等。手动去除这些标记不仅效率低下&#xff0c;还容易出错。本文将介绍如何使用 Pyt…

如何从头训练大语言模型: A simple technical report

今天来快速捋一下路线&#xff0c;写个简短的technical report&#xff0c;更多是原理介绍性的。按我个人理解&#xff0c;从最简单的部分开始&#xff0c;逐步过渡到最繁复的环节: 模型架构-> Pretrain -> Post-Train -> Infra -> 数据侧。再掺杂一些杂项&#xf…

gitlab无法登录问题

在我第一次安装gitlab的时候发现登录页面是 正常的页面应该是 这种情况的主要原因是不是第一次登录&#xff0c;所以我们要找到原先的密码 解决方式&#xff1a; [rootgitlab ~]# vim /etc/gitlab/initial_root_password# WARNING: This value is valid only in the followin…

食品饮料生产瓶颈?富唯智能协作机器人来 “破壁”

在食品和饮料行业的发展进程中&#xff0c;诸多生产瓶颈如重复性劳动负担、复杂环境作业难题、季节性产能波动等&#xff0c;长期制约着企业的高效运营与进一步发展。如今&#xff0c;富唯智能协作机器人的出现&#xff0c;为这些难题提供了完美的解决方案&#xff0c;正逐步改…

Python 实现 macOS 系统代理的设置

设置 SOCKS 代理 在 macOS 系统中&#xff0c;可以通过 networksetup 工具来设置 SOCKS 代理。以下是 Python 实现的方法&#xff1a; 使用 networksetup 设置 SOCKS 代理 import subprocessdef set_socks_proxy(server, port):"""设置 macOS 系统的 SOCKS 代理…

深度学习之神经网络框架搭建及模型优化

神经网络框架搭建及模型优化 目录 神经网络框架搭建及模型优化1 数据及配置1.1 配置1.2 数据1.3 函数导入1.4 数据函数1.5 数据打包 2 神经网络框架搭建2.1 框架确认2.2 函数搭建2.3 框架上传 3 模型优化3.1 函数理解3.2 训练模型和测试模型代码 4 最终代码测试4.1 SGD优化算法…

【设计模式】【行为型模式】命令模式(Command)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f4eb; 欢迎V&#xff1a; flzjcsg2&#xff0c;我们共同讨论Java深渊的奥秘 &#x1f…

C++模拟实现AVL树

目录 1.文章概括 2.AVL树概念 3.AVL树的性质 4.AVL树的插入 5.旋转控制 1.左单旋 2. 右单旋 3.左右双旋 4.右左双旋 6.全部代码 1.文章概括 本文适合理解平衡二叉树的读者阅读&#xff0c;因为AVL树是平衡二叉树的一种优化&#xff0c;其大部分实现逻辑与平衡二叉树是…