1. RabbitMQ消息队列简介
RabbitMQ是开源的消息代理软件,实现了高级消息队列协议(AMQP)。RabbitMQ以其可靠性、灵活路由和丰富的客户端支持著称,广泛用于分布式系统的消息传递、异步处理和解耦。更多学习教程www.fgedu.net.cn
RabbitMQ核心特点
可靠性:支持消息持久化、确认机制和事务
灵活路由:支持多种交换器类型实现灵活路由
集群支持:支持镜像队列和仲裁队列实现高可用
多协议支持:支持AMQP、MQTT、STOMP等协议
管理界面:提供功能丰富的Web管理控制台
2. RabbitMQ版本说明
RabbitMQ提供多个版本,用户可根据需求选择。学习交流加群风哥微信: itpux-com
最新版本信息
RabbitMQ 4.0.8:最新稳定版本
RabbitMQ 3.13.7:稳定版本,广泛使用
RabbitMQ 3.12.14:历史稳定版本
RabbitMQ 3.11.x:历史长期支持版本
版本特性
4.x版本:Khepri元数据存储,性能提升
3.13.x版本:仲裁队列增强,Classic Queue v2
3.12.x版本:Super Streams,MQTT 5.0支持
3. RabbitMQ下载地址
RabbitMQ可以从官方网站获取安装包。
官方下载地址
官方网站:https://www.rabbitmq.com/download
GitHub仓库:https://github.com/rabbitmq/rabbitmq-server/releases
文档中心:https://www.rabbitmq.com/docs
下载安装包
# cd /fgeudb/software
# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.0.8/rabbitmq-server-4.0.8-1.el7.noarch.rpm
# 输出示例如下:
–2026-04-04 10:00:00– https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.0.8/rabbitmq-server-4.0.8-1.el7.noarch.rpm
Resolving github.com… 140.82.112.4
Connecting to github.com|140.82.112.4|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 20971520 (20M) [application/x-rpm]
Saving to: ‘rabbitmq-server-4.0.8-1.el7.noarch.rpm’
rabbitmq-server-4.0.8-1.el7.noarch.rpm 100%[===================>] 20.00M 15.5MB/s in 1.3s
2026-04-04 10:00:10 (15.5 MB/s) – ‘rabbitmq-server-4.0.8-1.el7.noarch.rpm’ saved
# 验证下载文件
# ls -lh rabbitmq-server-4.0.8-1.el7.noarch.rpm
-rw-r–r–. 1 root root 20M Apr 4 10:00 rabbitmq-server-4.0.8-1.el7.noarch.rpm
4. 环境准备
在安装RabbitMQ之前,需要准备必要的系统环境和Erlang运行时。
系统要求
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
# 检查系统架构
# uname -m
x86_64
# 检查内存和磁盘空间
# free -h
total used free shared buff/cache available
Mem: 31G 2.1G 28G 8.5M 1.0G 28G
Swap: 15G 0B 15G
# df -h /fgeudb
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 500G 20G 480G 4% /fgeudb
# 安装Erlang(RabbitMQ 4.0需要Erlang 26+)
# yum install -y epel-release
# yum install -y erlang
# 验证Erlang版本
# erl -version
# 输出示例如下:
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 14.2
# 或者使用RabbitMQ官方Erlang包
# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
# yum install -y erlang
# 创建RabbitMQ用户和组
# groupadd -g 5015 rabbitmq
# useradd -g rabbitmq -u 5015 -d /var/lib/rabbitmq -s /sbin/nologin rabbitmq
# 创建数据目录
# mkdir -p /fgeudb/rabbitmq/{mnesia,log}
# chown -R rabbitmq:rabbitmq /fgeudb/rabbitmq
5. RPM包安装实战
使用RPM包安装是最简单的方式,以下是详细步骤。学习交流加群风哥QQ113257174
步骤1:安装RPM包
# yum install -y socat logrotate
# 安装RabbitMQ
# rpm -ivh rabbitmq-server-4.0.8-1.el7.noarch.rpm
# 输出示例如下:
Preparing… ################################# [100%]
Updating / installing…
1:rabbitmq-server-4.0.8-1.0 ################################# [100%]
# 查看安装目录
# ls -la /usr/lib/rabbitmq/
total 16
drwxr-xr-x. 4 root root 4096 Apr 4 10:05 .
drwxr-xr-x. 3 root root 4096 Apr 4 10:00 ..
drwxr-xr-x. 2 root root 4096 Apr 4 10:05 bin
drwxr-xr-x. 3 root root 4096 Apr 4 10:05 lib
# 查看配置目录
# ls -la /etc/rabbitmq/
total 8
drwxr-xr-x. 2 root root 4096 Apr 4 10:05 .
drwxr-xr-x. 3 root root 4096 Apr 4 10:00 ..
步骤2:配置RabbitMQ
# vi /etc/rabbitmq/rabbitmq.conf
# 基础配置
listeners.tcp.default = 5672
management.tcp.port = 15672
# 数据目录配置
default_user = admin
default_pass = YourPassword123!
# 内存配置
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark_paging_ratio = 0.75
# 磁盘配置
disk_free_limit.relative = 1.5
# 日志配置
log.file.level = info
log.console = true
# 保存配置文件
# 创建环境变量配置
# vi /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/fgeudb/rabbitmq/mnesia
RABBITMQ_LOG_BASE=/fgeudb/rabbitmq/log
RABBITMQ_NODE_IP_ADDRESS=0.0.0.0
RABBITMQ_NODE_PORT=5672
# 保存配置文件
步骤3:启动RabbitMQ
# rabbitmq-plugins enable rabbitmq_management
# 输出示例如下:
Enabling plugins on node rabbit@fgedu:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@fgedu…
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
# 启动RabbitMQ服务
# systemctl start rabbitmq-server
# 设置开机自启
# systemctl enable rabbitmq-server
# 输出示例如下:
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
# 检查服务状态
# systemctl status rabbitmq-server
● rabbitmq-server.service – RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled)
Active: active (running) since Fri 2026-04-04 10:15:00 CST; 10s ago
Main PID: 12345 (beam.smp)
CGroup: /system.slice/rabbitmq-server.service
├─12345 /usr/lib64/erlang/erts-14.2/bin/beam.smp …
├─12346 erl_child_setup 32768
└─12347 inet_gethost 4
# 检查端口
# netstat -tlnp | grep beam
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 12345/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 12345/beam.smp
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN 12345/beam.smp
6. Docker容器安装实战
使用Docker容器安装RabbitMQ是最快捷的方式,适合快速测试和开发环境。更多学习教程公众号风哥教程itpux_com
步骤1:拉取RabbitMQ镜像
# docker pull rabbitmq:4.0.8-management
# 输出示例如下:
4.0.8-management: Pulling from library/rabbitmq
f1f26f570256: Pull complete
8f8e43ef9c3a: Pull complete
e9d8dca5b8a5: Pull complete
a1b8d4c4a5e6: Pull complete
Digest: sha256:abc123def456…
Status: Downloaded newer image for rabbitmq:4.0.8-management
docker.io/library/rabbitmq:4.0.8-management
# 查看镜像
# docker images | grep rabbitmq
rabbitmq 4.0.8-management abc123def456 2 weeks ago 250MB
步骤2:运行RabbitMQ容器
# mkdir -p /fgeudb/rabbitmq/{data,logs}
# 运行RabbitMQ容器
# docker run -d \
–name rabbitmq \
–hostname rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-p 25672:25672 \
-v /fgeudb/rabbitmq/data:/var/lib/rabbitmq/mnesia \
-v /fgeudb/rabbitmq/logs:/var/log/rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=YourPassword123! \
-e RABBITMQ_VM_MEMORY_HIGH_WATERMARK=0.6 \
rabbitmq:4.0.8-management
# 输出示例如下:
abc123def456789…
# 检查容器状态
# docker ps | grep rabbitmq
abc123def456 rabbitmq:4.0.8-management “docker-entrypoint.s…” 10 seconds ago Up 9 seconds 0.0.0.0:15672->15672/tcp, 0.0.0.0:25672->25672/tcp, 0.0.0.0:5672->5672/tcp rabbitmq
# 查看容器日志
# docker logs rabbitmq
# 输出示例如下:
Server startup complete; 4 plugins started.
* rabbitmq_management
* rabbitmq_management_agent
* rabbitmq_web_dispatch
* rabbitmq_prometheus
Completed with 4 plugins.
7. RabbitMQ配置优化
以下是生产环境的RabbitMQ配置优化建议。
性能配置优化
# vi /etc/rabbitmq/rabbitmq.conf
# 基础配置
listeners.tcp.default = 5672
management.tcp.port = 15672
# 连接配置
connection_max = 10000
channel_max = 2048
# 内存配置
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark_paging_ratio = 0.75
# 磁盘配置
disk_free_limit.relative = 2.0
# 队列配置
queue_master_locator = min-masters
# 消息配置
consumer_timeout = 1800000
# 集群配置
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@node1
cluster_formation.classic_config.nodes.2 = rabbit@node2
cluster_formation.classic_config.nodes.3 = rabbit@node3
# 镜像队列配置(高可用)
ha_policy = ha-all
ha-sync-mode = automatic
# 保存配置文件
高级配置
# vi /etc/rabbitmq/advanced.config
[
{rabbit, [
{msg_store_file_size_limit, 16777216},
{queue_index_max_journal_entries, 65536},
{default_consumer_prefetch, [{credit, 256}]},
{collect_statistics, coarse},
{collect_statistics_interval, 30000}
]},
{kernel, [
{inet_dist_listen_min, 25672},
{inet_dist_listen_max, 25672}
]}
].
# 保存配置文件
# 配置文件描述符限制
# vi /etc/security/limits.d/rabbitmq.conf
rabbitmq soft nofile 65535
rabbitmq hard nofile 65535
8. 安装验证与测试
安装完成后,需要进行验证测试确保RabbitMQ正常运行。
访问Web管理控制台
# URL: http://192.168.1.51:15672/
# 登录信息
# 用户名: admin
# 密码: YourPassword123!
# RabbitMQ管理控制台功能:
# – 概览:显示队列、连接、通道统计
# – 连接:查看和管理客户端连接
# – 通道:查看和管理通道
# – 交换器:创建和管理交换器
# – 队列:创建和管理队列
# – 用户:管理用户和权限
# – 策略:配置队列和交换器策略
使用rabbitmqctl命令行工具
# rabbitmqctl status
# 输出示例如下:
Status of node rabbit@fgedu …
[{pid,12345},
{running_applications,
[{rabbit,”RabbitMQ”,”4.0.8″},
{rabbitmq_management,”RabbitMQ Management”,”4.0.8″},
{rabbitmq_management_agent,”RabbitMQ Management Agent”,”4.0.8″},
{os_mon,”CPO CXC 138 46″,”2.8.1″},
{mnesia,”MNESIA CXC 138 12″,”4.21.4″},
{xmerl,”XML parser”,”2.1″},
{rabbitmq_web_dispatch,”RabbitMQ Web Dispatcher”,”4.0.8″},
{cowboy,”Small, fast, modern HTTP server.”,”2.13.0″},
{cowlib,”Support library for manipulating Web protocols.”,”2.14.0″},
{ranch,”Socket acceptor pool for TCP protocols.”,”2.2.0″}]},
{os,{unix,linux}},
{erlang_version,”14.2″},
{memory,
[{total,104857600},
{connection_readers,1048576},
{connection_writers,2097152},
{connection_channels,1048576},
{connection_other,2097152},
{queue_procs,10485760},
{queue_slave_procs,0},
{plugins,20971520},
{other_proc,20971520},
{metrics,10485760},
{mgmt_db,20971520},
{mnesia,10485760},
{other_ets,10485760},
{binary,10485760},
{msg_index,1048576},
{code,20971520},
{atom,1048576},
{other_system,10485760}]},
{vm_memory_high_watermark,0.6},
{vm_memory_limit,12884901888},
{disk_free_limit,21474836480},
{disk_free,429496729600},
{file_descriptors,
[{total_limit,65535},
{total_used,10},
{sockets_limit,58983},
{sockets_used,5}]},
{processes,[{limit,1048576},{used,256}]},
{run_queue,0},
{uptime,3600}]
# 查看集群状态
# rabbitmqctl cluster_status
# 输出示例如下:
Cluster status of node rabbit@fgedu …
Basics
Cluster name: rabbit@fgedu
Disk Nodes
rabbit@fgedu
Running Nodes
rabbit@fgedu
Versions
rabbit@fgedu: RabbitMQ 4.0.8 on Erlang 14.2
# 查看用户列表
# rabbitmqctl list_users
# 输出示例如下:
Listing users …
user tags
admin [administrator]
# 查看队列列表
# rabbitmqctl list_queues name messages consumers
# 输出示例如下:
Timeout: 60.0 seconds …
Listing queues for vhost / …
创建测试队列和消息
# rabbitmqctl add_user testuser TestPassword123!
# rabbitmqctl set_permissions -p / testuser “.*” “.*” “.*”
# 输出示例如下:
Adding user “testuser” …
Setting permissions for user “testuser” in vhost “/”
# 使用rabbitmqadmin创建队列
# rabbitmqadmin -u admin -p YourPassword123! declare queue name=test_queue durable=true
# 输出示例如下:
queue declared
# 发布测试消息
# rabbitmqadmin -u admin -p YourPassword123! publish routing_key=test_queue payload=”Hello RabbitMQ!”
# 输出示例如下:
Message published
# 查看队列消息
# rabbitmqadmin -u admin -p YourPassword123! get queue=test_queue
# 输出示例如下:
+————-+———-+—————+——————+—————+——————+————+————-+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+————-+———-+—————+——————+—————+——————+————+————-+
| test_queue | | 0 | Hello RabbitMQ! | 15 | string | | False |
+————-+———-+—————+——————+—————+——————+————+————-+
REST API测试
$ curl -u admin:YourPassword123! http://192.168.1.51:15672/api/overview
# 输出示例如下:
{
“rabbitmq_version”: “4.0.8”,
“cluster_name”: “rabbit@fgedu”,
“erlang_version”: “14.2”,
“erlang_full_version”: “Erlang/OTP 26 [erts-14.2]”,
“message_stats”: {
“publish”: 1,
“publish_details”: {
“rate”: 0.0
}
},
“queue_totals”: {
“messages”: 0,
“messages_ready”: 0,
“messages_unacked”: 0
},
“object_totals”: {
“consumers”: 0,
“queues”: 1,
“exchanges”: 8,
“connections”: 0,
“channels”: 0
},
“statistics_db_event_queue”: 0,
“statistics_db_node”: “rabbit@fgedu”,
“node”: “rabbit@fgedu”,
“listeners”: [
{
“node”: “rabbit@fgedu”,
“protocol”: “amqp”,
“ip_address”: “0.0.0.0”,
“port”: 5672
},
{
“node”: “rabbit@fgedu”,
“protocol”: “clustering”,
“ip_address”: “::”,
“port”: 25672
},
{
“node”: “rabbit@fgedu”,
“protocol”: “http”,
“ip_address”: “0.0.0.0”,
“port”: 15672
}
]
}
# 查看队列列表
$ curl -u admin:YourPassword123! http://192.168.1.51:15672/api/queues
# 输出示例如下:
[
{
“name”: “test_queue”,
“messages”: 0,
“messages_ready”: 0,
“messages_unacked”: 0,
“consumers”: 0,
“durable”: true,
“auto_delete”: false
}
]
至此,RabbitMQ消息队列的下载和安装已完成。后续可以根据实际业务需求创建队列、交换器和配置集群。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
