目录

Ubuntu 上安装和配置 Apache RocketMQ 4.7.1

在 Ubuntu 上安装和配置 Apache RocketMQ 4.7.1 需要以下步骤。RocketMQ 是一个分布式消息队列系统,通常需要安装 Namesrv (Name Server)和 Broker 组件。


1. 系统准备

更新系统和安装依赖

运行以下命令更新系统并安装必要的依赖项:

bash 复制代码
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-8-jdk wget unzip

RocketMQ 4.7.1 要求 JDK 1.8,确保安装正确版本的 Java:

bash 复制代码
java -version
# 确保输出显示 Java 8

2. 下载 RocketMQ 4.7.1

从 Apache 官方下载 RocketMQ 4.7.1:

bash 复制代码
wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip

解压文件:

bash 复制代码
unzip rocketmq-all-4.7.1-bin-release.zip
mv rocketmq-all-4.7.1-bin-release /opt/rocketmq

3. 配置环境变量

为 RocketMQ 添加环境变量,方便使用命令:

bash 复制代码
echo "export ROCKETMQ_HOME=/opt/rocketmq" >> ~/.bashrc
echo "export PATH=\$PATH:\$ROCKETMQ_HOME/bin" >> ~/.bashrc
source ~/.bashrc

验证配置:

bash 复制代码
echo $ROCKETMQ_HOME

4. 启动 Name Server

  1. 进入 RocketMQ 目录:

    bash 复制代码
    cd /opt/rocketmq
  2. 启动 Name Server:

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

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

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

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


5. 启动 Broker

  1. 启动 Broker:

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

bash 复制代码
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 
bash 复制代码
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

设置 Broker 的内网地址

bash 复制代码
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerIP1=172.31.14.54

brokerIP2=13.229.140.142

bash 复制代码
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 是否启动成功:

    查看日志文件:

    bash 复制代码
    tail -f logs/broker.log

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


6. 测试 RocketMQ

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

  1. 发送测试消息:

    bash 复制代码
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
  2. 接收测试消息:

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

如果 Producer 和 Consumer 都能正常运行,说明 RocketMQ 已经安装成功。


7. 设置为系统服务(可选)

可以将 RocketMQ 的 Name Server 和 Broker 设置为系统服务,以便开机自启。

Name Server 服务配置

创建服务文件:

bash 复制代码
sudo nano /etc/systemd/system/rocketmq-namesrv.service

写入以下内容:

ini 复制代码
[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 服务配置

创建服务文件:

bash 复制代码
sudo nano /etc/systemd/system/rocketmq-broker.service

写入以下内容:

ini 复制代码
[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
启动服务

启用并启动服务:

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

检查服务状态:

bash 复制代码
sudo systemctl status rocketmq-namesrv
sudo systemctl status rocketmq-broker

8. Web Console(可选)

如果需要可视化界面,可以安装 RocketMQ 的 Web Console。

下载 Web Console
bash 复制代码
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
启动 Web Console

编译并运行 Web Console(需要 Maven 和 JDK 1.8):

bash 复制代码
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(如果需要):

    bash 复制代码
    sudo apt remove openjdk-11-jdk
    sudo apt autoremove
  2. 安装 Java 8

    bash 复制代码
    sudo apt update
    sudo apt install openjdk-8-jdk
  3. 验证 Java 版本

    bash 复制代码
    java -version

    确保显示类似以下内容:

    复制代码
    openjdk version "1.8.0_xxx"

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

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

  1. 列出已安装的 Java 版本

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

  3. 再次验证

    bash 复制代码
    java -version

方法三:指定 Java 环境变量

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

  1. 查找 Java 8 安装路径

    bash 复制代码
    sudo update-alternatives --display java

    你会看到类似以下输出:

    复制代码
    /usr/lib/jvm/java-8-openjdk-amd64/bin/java
  2. 修改 runserver.shrunbroker.sh 脚本

    找到 RocketMQ 的安装目录,编辑启动脚本,在顶部添加以下行:

bash 复制代码
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
  1. 重新启动 RocketMQ
bash 复制代码
   ./bin/mqnamesrv &
   ./bin/mqbroker -n localhost:9876 &

方法四:使用 Docker

如果不想修改系统环境,可以使用官方提供的 Docker 镜像,它已经包含了合适的 Java 环境:

bash 复制代码
docker pull apache/rocketmq:4.7.1

运行 RocketMQ:

bash 复制代码
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。如果仍有问题,可以告诉我具体的报错信息,我会进一步帮助你!

bash 复制代码
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
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
程序猿熊跃晖22 分钟前
Excel 数据导入与 SQL 生成:基于 Hutool 和 Apache POI 的优雅实践
sql·apache·excel
小诸葛的博客2 小时前
Kafka、RocketMQ、Pulsar对比
分布式·kafka·rocketmq
跳跳糖炒酸奶2 小时前
第四章、Isaacsim在GUI中构建机器人(3):添加摄像头和传感器
人工智能·python·算法·ubuntu·机器人
mingqian_chu1 天前
ubuntu中使用安卓模拟器
android·linux·ubuntu
高如风1 天前
rocketmq基础
rocketmq
Zero_to_zero12341 天前
解决docker的ubuntu系统中文乱码问题
ubuntu·docker·容器
一大Cpp1 天前
Ubuntu与本地用户交流是两种小方法
linux·运维·ubuntu
CZIDC2 天前
win11 系统环境下 新安装 WSL ubuntu + ssh + gnome 桌面环境
数据库·ubuntu·ssh
wkm9562 天前
qt.qpa.xcb: could not connect to display解决方法
开发语言·qt·ubuntu