RabbitMQ、RocketMQ 和 ActiveMQ 三种主流消息队列的详细部署安装指南
RabbitMQ、RocketMQ 和 ActiveMQ 三种主流消息队列的详细部署安装指南。
一、RabbitMQ 部署安装
RabbitMQ 用 Erlang 语言编写,推荐使用官方提供的 Docker 镜像或包管理器安装。
方法一:使用 Docker (推荐,最简单)
# 1. 拉取官方镜像 (management 版本包含 Web 管理界面)
docker pull rabbitmq:3.13-management
# 2. 启动容器--直接复制使用, 后不能有空格,否则执行失败
docker run -d
--name rabbitmq
-p 5672:5672
-p 15672:15672
-e RABBITMQ_DEFAULT_USER=admin
-e RABBITMQ_DEFAULT_PASS=admin
rabbitmq:3.13-management
# 解释说明
docker run -d
--name rabbitmq
-p 5672:5672 # AMQP 端口
-p 15672:15672 # Web 管理界面端口
-e RABBITMQ_DEFAULT_USER=admin # 设置默认用户名
-e RABBITMQ_DEFAULT_PASS=admin # 设置默认密码
rabbitmq:3.13-management
# 3. 访问 Web 管理界面
# 打开浏览器,访问 http://<你的服务器IP>:15672
# 使用上面设置的用户名和密码登录 (admin/admin)
方法二:在 Ubuntu/Debian 上使用 APT
# 1. 更新包列表
sudo apt update
# 2. 安装必要的依赖
sudo apt install -y curl gnupg apt-transport-https
# 3. 添加 RabbitMQ 官方签名密钥
curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo gpg --dearmor -o /usr/share/keyrings/rabbitmq.gpg
# 4. 添加 RabbitMQ 仓库
echo "deb [signed-by=/usr/share/keyrings/rabbitmq.gpg] https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-server/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
# 5. 更新包列表
sudo apt update
# 6. 安装 RabbitMQ Server
sudo apt install -y rabbitmq-server
# 7. 启动并设置开机自启
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
# 8. 启用管理插件 (Web UI)
sudo rabbitmq-plugins enable rabbitmq_management
# 9. (可选) 添加管理员用户
sudo rabbitmqctl add_user admin your_password
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 10. 访问 Web 管理界面 (默认 guest/guest 用户只能本地登录)
# http://<你的服务器IP>:15672
验证安装
# 查看服务状态
sudo systemctl status rabbitmq-server
# 查看插件列表 (确认 management 已启用)
sudo rabbitmq-plugins list | grep management
# 查看队列 (初始为空)
sudo rabbitmqctl list_queues
二、RocketMQ 部署安装
RocketMQ 部署相对复杂,需要先启动
,再启动
NameServer
。建议使用 Docker Compose 或官方脚本。
Broker
方法:使用 Docker Compose (推荐)
https://rocketmq.apache.org/zh/docs/quickStart/02quickstartWithDocker/
1.创建 docker-compose-RocketMQ.yml 文件:
cd /soft
mkdir RocketMQ
cd RocketMQ
vi docker-compose-RocketMQ.yml
version: '3.8'
services:
namesrv:
image: apache/rocketmq:5.3.2
container_name: rmqnamesrv
ports:
- 9876:9876
networks:
- rocketmq
command: sh mqnamesrv
broker:
image: apache/rocketmq:5.3.2
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
environment:
- NAMESRV_ADDR=namesrv:9876
depends_on:
- namesrv
networks:
- rocketmq
volumes:
- ./broker.conf:/home/rocketmq/broker.conf
command: sh mqbroker -c /home/rocketmq/broker.conf
proxy:
image: apache/rocketmq:5.3.2
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
dashboard:
image: apacherocketmq/rocketmq-dashboard:latest
container_name: rmqdashboard
ports:
- "8082:8082"
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876
depends_on:
- namesrv
networks:
- rocketmq
networks:
rocketmq:
driver: bridge
2.创建 broker.conf 配置文件:
vi broker.conf
# 消费模式,默认集群
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
# 清除未被消费消息时间,凌晨四点
deleteWhen = 04
#消息保留时间
fileReservedTime = 48
#broker角色,默认为异步MASTER
#刷盘策略,异步刷盘
brokerRole = ASYNC_MASTER
#broker文件地址
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.44.153
#是否允许自动创建topic
autoCreateTopicEnable=true
3.启动服务:
# 所在的路径
cd /soft/RocketMQ/
# 查看文件
ls
broker.conf data docker-compose-RocketMQ.yml
# 在 docker-compose-RocketMQ.yml 文件所在目录执行
docker compose -f docker-compose-RocketMQ.yml up -d
# 查看日志
docker compose -f docker-compose-RocketMQ.yml logs -f
# 查看容器
[root@ky10 rocketmq]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ea2a2c547f7 apache/rocketmq:5.3.2 "./docker-entrypoint…" 6 minutes ago Up 5 minutes 9876/tcp, 10909/tcp, 0.0.0.0:8080-8081->8080-8081/tcp, :::8080-8081->8080-8081/tcp, 10911-10912/tcp rmqproxy
a5011a829c2f apache/rocketmq:5.3.2 "./docker-entrypoint…" 6 minutes ago Up 6 minutes 0.0.0.0:10909->10909/tcp, :::10909->10909/tcp, 9876/tcp, 0.0.0.0:10911-10912->10911-10912/tcp, :::10911-10912->10911-10912/tcp rmqbroker
670e8caf9283 apacherocketmq/rocketmq-dashboard:latest "sh -c 'java $JAVA_O…" 6 minutes ago Up 6 minutes 0.0.0.0:8082->8082/tcp, :::8082->8082/tcp rmqdashboard
3b611453e963 apache/rocketmq:5.3.2 "./docker-entrypoint…" 6 minutes ago Up 6 minutes 10909/tcp, 0.0.0.0:9876->9876/tcp, :::9876->9876/tcp, 10911-10912/tcp rmqnamesrv
4.访问控制台 (如果启用了 console 服务):
访问
在 Settings 中设置
http://<你的服务器IP>:8082
为
NameServer Address
(你的宿主机IP)
192.168.44.153:9876
验证安装
# 进入 Broker 容器
docker exec -it rmqbroker /bin/bash
# 使用 RocketMQ 自带的命令行工具发送测试消息
# (在容器内执行)
sh /home/rocketmq/rocketmq-5.3.2/bin/mqadmin updateTopic -n namesrv:9876 -t TestTopic -c DefaultCluster
sh /home/rocketmq/rocketmq-5.3.2/bin/mqadmin clusterList -n namesrv:9876
# 或者使用 Producer/Consumer 示例代码测试
三、ActiveMQ 部署安装
ActiveMQ 安装相对简单,有二进制包和 Docker 两种方式。
方法一:使用 Docker
# 1. 拉取官方镜像
docker pull apache/activemq-classic
# 2. 启动容器
docker run -d
--name activemq
-p 8161:8161
-p 61616:61616
-p 5672:5672
-p 1883:1883
-p 61613:61613
-e ARTEMIS_USERNAME=admin
-e ARTEMIS_PASSWORD=admin
-e DISABLE_SECURITY=false
apache/activemq-classic:latest
# 解释说明
docker run -d
--name activemq
-p 8161:8161 # Web 控制台端口
-p 61616:61616 # OpenWire 端口 (默认)
-p 5672:5672 # AMQP 端口
-p 1883:1883 # MQTT 端口
-p 61613:61613 # STOMP 端口
-e ARTEMIS_USERNAME=admin
-e ARTEMIS_PASSWORD=admin
-e DISABLE_SECURITY=false
apache/activemq-classic:latest
# 3. 访问 Web 控制台
# 打开浏览器,访问 http://<你的服务器IP>:8161
# 使用 admin/admin 登录
方法二:下载二进制包 (Linux)
# 1. 下载 (以 ActiveMQ Artemis 2.30.0 为例)
wget https://archive.apache.org/dist/activemq/activemq-artemis/2.30.0/apache-artemis-2.30.0-bin.tar.gz
tar -xzf apache-artemis-2.30.0-bin.tar.gz
cd apache-artemis-2.30.0
# 2. 创建 Broker 实例
# (在 apache-artemis-2.30.0 目录下执行)
./bin/artemis create /opt/activemq-instance --user admin --password admin --role admin --require-login
# 3. 启动 Broker
/opt/activemq-instance/bin/artemis-service start
# 或直接运行
/opt/activemq-instance/bin/artemis run
# 4. 访问 Web 控制台
# http://<你的服务器IP>:8161
验证安装
# 查看进程
ps aux | grep activemq
# 查看日志
tail -f /opt/activemq-instance/log/artemis.log
# 使用命令行工具 (在实例目录下)
/opt/activemq-instance/bin/artemis address list
通用部署注意事项
防火墙: 确保开放了相应的端口(RabbitMQ: 5672, 15672; RocketMQ: 9876, 10911; ActiveMQ: 61616, 8161)。资源: 根据预期负载分配足够的 CPU、内存和磁盘空间。消息持久化对磁盘 I/O 要求较高。生产环境:
集群: 单节点不可靠。务必部署集群(RabbitMQ 镜像队列,RocketMQ 主从,ActiveMQ Replicated LevelDB 或 Network of Brokers)。安全: 修改默认用户名密码,配置 TLS/SSL 加密,设置访问控制。监控: 集成 Prometheus、Grafana 或使用自带的监控工具。持久化: 确保数据目录挂载到可靠的持久化存储(如云盘)。备份: 制定数据备份和恢复策略。
Docker 网络: 使用 Docker 时,注意容器间通信(
)和宿主机网络(
depends_on
的设置至关重要)。版本选择: 选择稳定版本,避免使用过时或测试版本。
brokerIP1
ctiveMQ Replicated LevelDB 或 Network of Brokers)。
* 安全: 修改默认用户名密码,配置 TLS/SSL 加密,设置访问控制。
* 监控: 集成 Prometheus、Grafana 或使用自带的监控工具。
* 持久化: 确保数据目录挂载到可靠的持久化存储(如云盘)。
* 备份: 制定数据备份和恢复策略。
4. Docker 网络: 使用 Docker 时,注意容器间通信(
)和宿主机网络(
depends_on
的设置至关重要)。
brokerIP1
5. 版本选择: 选择稳定版本,避免使用过时或测试版本。
选择哪种安装方式取决于你的环境和需求。Docker 是最推荐的方式,因为它简化了依赖管理和环境一致性。对于生产环境,建议深入研究集群部署和高可用方案。
暂无评论内容