文章目录
- RocketMQ介绍
- 基于Linux服务部署RocketMQ(单机)
- 配置JDK环境
- 下载RocketMQ
- 部署RocketMQ
- 1、解压
- 2、修改VM参数
- 3、配置环境变量
- 4、编写Service文件
- 5、启动服务
- 基于Docker方式部署RocketMQ
- 安装Docker
- 编写`docker-compose`文件
- 启动RocketMQ服务
- 部署RocketMQ-Dashboard服务
- 基于docker镜像部署
- 基于源码部署
- 常见问题
RocketMQ介绍
官网地址:https://rocketmq.apache.org/zh/
RocketMQ是一个分布式消息中间件,具有高性能、高可靠、高实时和分布式等特点。 它支持事务消息、顺序消息、批量消息、定时消息和消息回溯等功能。RocketMQ的核心组件包括Producer、Consumer、Broker和NameServer,这些组件共同工作,提供了低延迟和高吞吐量的消息处理能力。
RocketMQ的特点包括:
高性能:支持万亿级吞吐量,满足微服务和大数据场景需求。
高可靠:提供金融级稳定性,广泛用于交易核心链路。
高实时:实现实时的消息订阅和消费机制。
分布式:Producer、Consumer和队列都可以分布式部署,支持水平扩展。
严格的消息顺序:通过发送到同一队列保证消费顺序。
丰富的消息拉取模式:支持推(Push)和拉(Pull)两种模式,并提供多种消息协议。
亿级消息堆积能力:确保在高负载情况下消息不会丢失。
较少的依赖:采用Shared-nothing架构,零外部依赖,确保系统稳定。
RocketMQ的应用场景包括云边端一体化数据处理、微服务架构中的消息治理、Serverless应用场景等。它支持海量Topic需求,可以与任意系统建立连接,适用于构建流式ETL、数据管道和数据湖等。RocketMQ还被广泛应用于电商项目、订单交易系统等高并发系统中,帮助提升开发效率和系统稳定性。
基于Linux服务部署RocketMQ(单机)
配置JDK环境
参考另一篇教程:CentOS7安装配置JDK环境 保姆级教程
下载RocketMQ
官方下载地址
这里我们可以直接下载二进制(Binary)的包(如果有需要自己编译的话可以下载源码包(Source))
下载完后我们需要上传到服务器上面。
这里推荐直接在服务器上使用命令下载,这样就可以跳过上传这一步操作了
# 这里我们下载版本是5.2.0(就冲这个版本号 “我爱你”)
# 使用wget命令
wget https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip
# 使用curl命令
curl -O https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip
部署RocketMQ
1、解压
# 解压
unzip rocketmq-all-5.2.0-bin-release.zip
# 移动到固定位置(这里可以使用自己的位置)
cp -r rocketmq-all-5.2.0-bin-release /usr/local/rocketmq
2、修改VM参数
RocketMQ默认的内存分配比较大,机器内存比较小的话需要调整一下。具体配置按需调整
runbroker.sh
3、配置环境变量
echo "export ROCKETMQ_HOME=/opt/rocketmq" >> ~/.bashrc
echo "export PATH=\$PATH:\$ROCKETMQ_HOME/bin" >> ~/.bashrc
source ~/.bashrc
或者操作 /etc/profile
文件
4、编写Service文件
在Linux系统中,服务的配置文件通常位于/etc/systemd/system/
目录下。当你创建了一个新的服务文件后,需要重新加载systemd的配置,并重启服务以使新服务生效。
mqnameser.service
[Unit] Description=RocketMQ NameServer Service After=network.target [Service] Type=simple ExecStart=/usr/local/rocketmq/bin/mqnamesrv ExecStop=/usr/local/rocketmq/bin/mqshutdown namesrv User=root Restart=on-failure RestartSec=5s StandardOutput=syslog StandardError=syslog SyslogIdentifier=mqnameser LimitNOFILE=65536 [Install] WantedBy=multi-user.target
mqbroker.service
[Unit] Description=RocketMQ Broker Service After=network.target mqnameser.service [Service] Type=simple ExecStart=/usr/local/rocketmq/bin/mqbroker -n localhost:9876 ExecStop=/usr/local/rocketmq/bin/mqshutdown broker User=root Restart=on-failure RestartSec=5s StandardOutput=syslog StandardError=syslog SyslogIdentifier=mqbroker LimitNOFILE=65536 [Install] WantedBy=multi-user.target
mqproxy.service
[Unit] Description=RocketMQ Proxy Service After=network.target mqbroker.service [Service] Type=simple ExecStart=/usr/local/rocketmq/bin/mqproxy -n localhost:9876 ExecStop=/usr/local/rocketmq/bin/mqshutdown proxy User=root Restart=on-failure RestartSec=5s StandardOutput=syslog StandardError=syslog SyslogIdentifier=mqproxy LimitNOFILE=65536 [Install] WantedBy=multi-user.target
5、启动服务
# 重载服务
sudo systemctl daemon-reload
sudo systemctl start mqnameser.service
sudo systemctl start mqbroker.service
sudo systemctl start mqproxy.service
基于Docker方式部署RocketMQ
安装Docker
请参考另一篇教程:CentOS7安装Docker教程(图文)
编写docker-compose
文件
# 创建服务目录,可以自定义 按自己的需要调整
mkdir /data/rocketmq
# 进入目录
cd /data/rocketmq
# 创建文件
touch docker-compose.yml
docker-compose.yml文件:
version: '3'
services:
namesrv:
image: apache/rocketmq:5.2.0
container_name: rmqnamesrv
ports:
- 9876:9876
networks:
- rocketmq
command: sh mqnamesrv
broker:
image: apache/rocketmq:5.2.0
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
depends_on:
- namesrv
networks:
- rocketmq
command: sh mqbroker
proxy:
image: apache/rocketmq:5.2.0
container_name: rmqproxy
networks:
- rocketmq
depends_on:
- broker
- namesrv
ports:
- 8080:8080
- 8081:8081
restart: on-failure
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
command: sh mqproxy
console:
image: styletang/rocketmq-console-ng:latest
restart: always
container_name: rmqconsole
networks:
- rocketmq
depends_on:
- namesrv
ports:
- 8082:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
networks:
rocketmq:
driver: bridge
启动RocketMQ服务
cd /data/rocketmq/
# 启动服务
docker-compose up -d
# 查看docker运行中的服务
docker ps
# 停止服务
docker-compose down
部署RocketMQ-Dashboard服务
RocketMQ Dashboard
是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。
官网介绍
源码github仓库地址
基于docker镜像部署
没有docker环境的参考这篇文章:CentOS7安装Docker教程(图文)
- 拉取 rocketmq-dashboard 镜像
docker pull apacherocketmq/rocketmq-dashboard:latest
- docker 容器中运行 rocketmq-dashboard
$ docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
提示
namesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址:端口号
开放端口号:8080
,9876
,10911
,11011
端口
云服务器:设置安全组访问规则
本地虚拟机:关闭防火墙,或 -add-port
基于源码部署
源码地址:apache/rocketmq-dashboard
下载并解压,切换至源码目录 rocketmq-dashboard-master/
- 编译rocketmq-dashboard
mvn clean package -Dmaven.test.skip=true
- 运行 rocketmq-dashboard
# 这里的rocketmq-dashboard-1.0.1-SNAPSHOT.jar文件名请使用实际名称(因为后续版本会迭代,版本号会更新) java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
提示:Started App in x.xxx seconds (JVM running for x.xxx) 启动成功
浏览器页面访问:namesrv.addr:8080
关闭 rocketmq-dashboard : ctrl + c
再次启动:执行 步骤2
tips:下载后的源码需要上传到 Linux 系统上编译,本地编译可能会报错。
常见问题
- 碰上服务无法访问,先检查服务日志是否正常启动,再检查服务器防火墙和安全组是否有放开相应的端口。