RabbitMQ、RocketMQ 和 ActiveMQ 三种主流消息队列的详细部署安装指南

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
,再启动
Broker
。建议使用 Docker Compose 或官方脚本。

方法:使用 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 服务):

访问
http://<你的服务器IP>:8082
在 Settings 中设置
NameServer Address

192.168.44.153:9876
(你的宿主机IP)

验证安装

# 进入 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 是最推荐的方式,因为它简化了依赖管理和环境一致性。对于生产环境,建议深入研究集群部署和高可用方案。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
柱的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容