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

Centos9 安装 RocketMQ5

环境:mac M4
Linux:虚拟机 centos9

1. 下载

官网下载地址链接
rocketmq-dashboard可视化界面下载链接
官网文档链接

2. 修改配置

修改两个.sh配置文件的目的仅仅是为了运行时占用的内存少一些,如果电脑配置够高,不修改也行

  1. 下载rocketmq-all-5.3.2-bin-release.zip后拷贝到centos中解压
unzip rocketmq-all-5.3.2-bin-release.zip
  1. 修改解压后/bin目录中的两个文件,将内存改小,目的是为了在虚拟机中好运行

runbroker.sh

  • 将原来的-Xms8g -Xmx8g改成-Xms2g -Xmx2g
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g"

runserver.sh

  • 代码中有个判断语句if [ -z "$JAVA_MAJOR_VERSION" ] || [ "$JAVA_MAJOR_VERSION" -lt "9" ] ; then一个if判断,如果java版本小于9就会走上面的配置,大于9就会走else中的配置。
  • 将原来的-Xms4g -Xmx4g改成-Xms2g -Xmx2g
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  1. 修改/conf中的broker.conf配置文件

在最后追加3行代码

brokerClusterName = DefaultCluster
...
flushDiskType = ASYNC_FLUSHnamesrvAddr = 192.168.89.129:9876
autoCreateTopicEnable = true
brokerIP1 = 192.168.89.129
  • 这个配置文件是给mqbroker启动时的配置
  • namesrvAddr = 192.168.89.129:9876:当 Broker 启动时,会依据这个配置的地址和端口,主动连接 NameServer 并注册自身的信息
  • autoCreateTopicEnable = true:当生产者尝试向一个不存在的主题发送消息时,Broker 会自动创建这个主题,生产环境中,通常不建议开启此功能
  • brokerIP1 = 192.168.89.129:指定 Broker 对外暴露的 IP 地址。Broker 在向 NameServer 注册自身信息时,会把 brokerIP1 配置的 IP 地址一并注册上去。NameServer 再把这个 IP 地址提供给生产者和消费者,从而保证它们能够正确地连接到 Broker。
  • 在生产环境NameServer和Broker可能不在同一个服务器中,配置地址时需配置服务器提供的地址。
  • 在虚拟机中也不要配置127.0.0.1,rocketmq-dashboard有时会找不到,不知道是哪儿的bug

3. 启动

修改profile

vim /etc/profile

将rocketmq加入path中,启动和停止的时候不用使用路径了,省事

# 配置rocketmq
export ROCKETMQ_HOME=/root/rocketmq
export PATH=$ROCKETMQ_HOME/bin:$PATH
# 启动NameServer
[root@centoshost rocketmq]# mqnamesrv
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876
# 启动Bocker
[root@centoshost ~]# mqbroker -n 192.168.89.129:9876
# 中间有很多日志,可拷贝给ai看看
The broker[centoshost, 192.168.89.129:10911] boot success. serializeType=JSON and name server is 192.168.89.129:9876
  • mqbroker -n 192.168.89.129:9876:192.168.89.129:9876是NameServer的地址,我不配置这个mqbroker可以启动,但是rocketmq-dashboard看不到mqbroker,感觉是没有自动取加载conf配置文件

4. 安装rocketmq-dashboard

这里没有使用docker镜像,直接运行的jar包
修改yml文件

rocketmq:config:namesrvAddrs:- 192.168.89.129:9876
  • 在idea中运行测试一下,已经可以看到NameServer和Broker
  • 将jar包拷贝到虚拟机中运行,也可以在本地运行
# 启动 rocketmq-dashboard
[root@centoshost rocketmq-dashboard]# java -jar rocketmq-dashboard-2.0.1-SNAPSHOT.jar 

页面显示

在这里插入图片描述
在这里插入图片描述

5. Docker 部署 RocketMQ5

如果运行环境是mac主机、虚拟机安装centos,想使用docker镜像安装rocketmq行不通,因为他们的镜像是arm64的,不能用,需要重新编译,包括:rocketmq-dashboard、mqnamesrv、broker3个镜像都需要重新制作镜像,制作镜像的方法链接

参考文章[链接]
(https://blog.csdn.net/weixin_44606481/article/details/129758920)

# 拉取rocketmq
docker pull apache/rocketmq:5.3.2

部署nameServer

# 创建日志目录,脚本目录
mkdir /root/rocketmq/nameserver/logs -p
mkdir /root/rocketmq/nameserver/bin -p
# 修改文件权限
chmod 777 -R /root/rocketmq/nameserver/*
# 随便启动mqnamesrv,拷贝完文件就删除
docker run -d \
--privileged=true \
--name rmqnamesrv \
apache/rocketmq:5.3.2 sh mqnamesrv
# 复制容器内启动脚本到挂载目录
docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh /root/rocketmq/nameserver/bin/runserver.sh
# 删除容器
docker rm -f rmqnamesrv
# 启动nameServer
docker run -d \
--privileged=true \
--restart=always \
--name rmqnamesrv \
-p 9876:9876  \
-v /root/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /root/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
apache/rocketmq:5.3.2 sh mqnamesrv

部署Broker

# 创建需要的挂载目录
mkdir /root/rocketmq/broker/logs -p \
mkdir /root/rocketmq/broker/data -p \
mkdir /root/rocketmq/broker/conf -p \
mkdir /root/rocketmq/broker/bin -p
# 设置权限
chmod 777 -R /root/rocketmq/broker/*
# 创建Broker的配置文件
vi /root/rocketmq/broker/conf/broker.conf
# broker.conf# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 48
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH# nameServer 地址多个用;隔开 默认值null
# 例:127.0.0.1:6666;127.0.0.1:8888 
namesrvAddr = 192.168.3.234:9876
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker服务地址,内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = 192.168.3.234
# 启动Broker,用于拷贝文件
docker run -d \
--name rmqbroker \
--privileged=true \
apache/rocketmq:5.3.2 \
sh mqbroker
# 拷贝Broker里面的文件
docker cp rmqbroker:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh /root/rocketmq/broker/bin/runbroker.sh
# 删除Broker容器
docker rm -f rmqbroker
# 启动Broker
docker run -d \
--restart=always \
--name rmqbroker \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /root/rocketmq/broker/logs:/root/logs \
-v /root/rocketmq/broker/store:/root/store \
-v /root/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /root/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
apache/rocketmq:5.3.2 \
sh mqbroker -c /home/rocketmq/broker.conf

部署rocketmq-dashboard

# 拉取
docker pull apacherocketmq/rocketmq-dashboard:latest
# RocketMQ Dashboard启动
docker run -d \
--restart=always \
--name rmqdashboard \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=192.168.3.234:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9875:8080 \
apacherocketmq/rocketmq-dashboard:latest

在这里插入图片描述

6. 使用 docker-compose部署

创建yml文件,文件位置随意

vim /root/docker-compose
  • 拷贝以下代码,使用了RocketMq 5.2
services:rmqnamesrv:image: apache/rocketmq:5.2.0container_name: rmqnamesrvrestart: alwaysprivileged: trueports:- "9876:9876"volumes:- /root/rocketmq/nameserver/logs:/home/rocketmq/logs- /root/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.2.0/bin/runserver.shcommand: sh mqnamesrvrmqbroker:image: apache/rocketmq:5.2.0container_name: rmqbrokerrestart: alwaysprivileged: trueports:- "10911:10911"- "10909:10909"volumes:- /root/rocketmq/broker/logs:/root/logs- /root/rocketmq/broker/store:/root/store- /root/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf- /root/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.2.0/bin/runbroker.shcommand: sh mqbroker -c /home/rocketmq/broker.confdepends_on:- rmqnamesrvrmqdashboard:image: apacherocketmq/rocketmq-dashboard:latestcontainer_name: rmqdashboardrestart: alwaysenvironment:- JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.3.234:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=falseports:- "9875:8080"depends_on:- rmqnamesrv- rmqbroker

启动

docker-compose up -d

7. docker-compose的基本命令

docker-compose.yml 是 Docker Compose 的配置文件,用于定义和管理多个 Docker 容器的应用程序。以下是使用 docker-compose.yml 的基本步骤:

  1. 安装 Docker Compose:首先,确保你已经安装了 Docker Compose。下载的docker中一般已经包含了Compose
[root@centos9 ~]# docker-compose --version
Docker Compose version v2.35.1
  1. 创建 docker-compose.yml 文件:在随意一个目录中创建一个名为 docker-compose.yml 的文件。这个文件使用 YAML 格式来定义你的应用程序的服务、网络和卷等。

  2. 定义服务:在 docker-compose.yml 文件中,使用 services 关键字来定义你的应用程序的各个服务。每个服务都有一个名称,并且可以指定以下属性:

    • image:指定服务使用的 Docker 镜像。
    • ports:指定服务暴露的端口。
    • volumes:指定服务使用的卷。
    • environment:指定服务的环境变量。
    • depends_on:指定服务之间的依赖关系。

例如,以下是一个简单的 docker-compose.yml 文件,定义了一个 Web 服务和一个数据库服务:

services:web:image: nginxports:- "80:80"volumes:-./html:/usr/share/nginx/htmldb:image: mysqlenvironment:- MYSQL_ROOT_PASSWORD=password- MYSQL_DATABASE=mydatabasevolumes:-./data:/var/lib/mysql

在这个例子中,web 服务使用了 Nginx 镜像,并将容器的 80 端口映射到主机的 80 端口。web 服务还使用了一个卷,将主机的 ./html 目录挂载到容器的 /usr/share/nginx/html 目录。db 服务使用了 MySQL 镜像,并设置了一些环境变量。db 服务也使用了一个卷,将主机的 ./data 目录挂载到容器的 /var/lib/mysql 目录。

  1. 启动服务:在目录中打开终端,运行以下命令来启动服务,在终端显示日志,退出则会关闭容器:
docker-compose up

这个命令会读取 docker-compose.yml 文件,并启动其中定义的所有服务。你可以使用 -d 选项来在后台运行服务:

docker-compose up -d
  1. 管理服务:使用 docker-compose 命令来管理服务。例如,你可以使用以下命令来停止服务:
docker-compose down

你还可以使用以下命令来重启服务:

docker-compose restart
  1. 查看服务状态:使用 docker-compose ps 命令来查看服务的状态。这个命令会列出所有正在运行的服务及其状态。

  2. 查看服务日志:使用 docker-compose logs 命令来查看服务的日志。这个命令会显示所有服务的日志输出。

  3. 扩展服务:使用 docker-compose scale 命令来扩展服务。例如,你可以使用以下命令来将 web 服务扩展到 3 个实例:

docker-compose scale web=3
http://www.xdnf.cn/news/3641.html

相关文章:

  • WebSocket分布式实现方案
  • MySQL中的窗口函数
  • Modbus 通讯协议(超详细,简单易懂)
  • Qt 中实现观察者模式(Observer Pattern)
  • Milvus(12):分析器
  • 虚拟机软件详解
  • AI日报 · 2025年5月03日|Perplexity 集成 WhatsApp,苹果传与 Anthropic 合作开发 Xcode
  • 青少年编程与数学 02-018 C++数据结构与算法 24课题、密码学算法
  • 【C#】一个类中的接口方法使用static和不使用static的区别
  • aidermacs开源程序使用 Aider 在 Emacs 中进行 AI 配对编程
  • 使用xlwings将excel表中将无规律的文本型数字批量转化成真正的数字
  • 自定义Dockerfile,发布springboot项目
  • Mysql进阶篇1_存储引擎、索引、SQL性能分析指令
  • 基于Jenkins的DevOps工程实践之Jenkins共享库
  • AVIOContext 再学习
  • Spring 容器相关的核心注解​
  • 19. LangChain安全与伦理:如何避免模型“幻觉“与数据泄露?
  • Linux电源管理(5)_Hibernate和Sleep功能介绍
  • ElasticSearch深入解析(九):Object、Nested、Flattened类型
  • 【RabbitMQ】 RabbitMQ快速上手
  • Python 函数装饰器和闭包(使用装饰器改进“策略”模式)
  • 玩转Docker | 使用Docker部署AI证件照工具
  • 【2025】ORM框架是什么?有哪些常用?Mybatis和Hibernate是什么样的?
  • ES6/ES11知识点
  • wpf CommandParameter 传递MouseWheelEventArgs参数 ,用 MvvmLight 实现
  • Word域操作记录(从1开始的毕业论文格式排版)
  • 神经网络的基本概念与深度解析——基于生物机制的仿生建模与工程实现
  • Spring Boot的GraalVM支持:构建低资源消耗微服务
  • Kubernetes(k8s)学习笔记(四)--入门基本操作
  • 双指针(5)——有效三角形个数