1. RabbitMQ简介
RabbitMQ是由Pivotal开发的开源消息代理软件,实现了AMQP(高级消息队列协议)标准。RabbitMQ采用Erlang语言编写,具有高可靠性、高可用性和可扩展性。RabbitMQ广泛应用于异步处理、应用解耦、流量削峰、消息广播等场景。更多学习教程www.fgedu.net.cn
RabbitMQ的主要特点包括:支持多种消息协议、灵活的路由机制、高可用集群、消息持久化、多种客户端支持、管理界面、插件扩展、消息确认机制。
2. RabbitMQ版本说明
RabbitMQ提供多个版本系列,用户可根据需求选择:
当前版本
RabbitMQ 4.2.1:最新版本
RabbitMQ 4.2.0:稳定版本
历史版本
RabbitMQ 4.0.x:支持AMQP 1.0
RabbitMQ 3.13.x:经典版本
依赖要求
Erlang 26.x或更高版本
支持多种操作系统
支持的平台
Linux:RHEL、CentOS、Ubuntu、Debian、SUSE
Windows:Windows Server 2012+
macOS:Homebrew安装
Docker:官方镜像
3. 官方下载方式
RabbitMQ是完全开源免费的消息队列,可直接从官网下载。学习交流加群风哥微信: itpux-com
官方下载地址
RabbitMQ官网:https://www.rabbitmq.com/
下载页面:https://www.rabbitmq.com/docs/download
GitHub仓库:https://github.com/rabbitmq/rabbitmq-server
使用wget下载
$ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.2.1/rabbitmq-server-4.2.1-1.el8.noarch.rpm
# 输出示例如下:
–2026-04-04 10:15:00– https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.2.1/rabbitmq-server-4.2.1-1.el8.noarch.rpm
Resolving github.com… 140.82.121.4
Connecting to github.com|140.82.121.4|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 15678901 (15M) [application/octet-stream]
Saving to: ‘rabbitmq-server-4.2.1-1.el8.noarch.rpm’
rabbitmq-server-4.2.1-1.el8.noarch.rpm 100%[===========================================>] 14.96M 25.5MB/s in 0.6s
# 下载RabbitMQ DEB包(Ubuntu/Debian)
$ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.2.1/rabbitmq-server_4.2.1-1_all.deb
# 输出示例如下:
–2026-04-04 10:15:00– https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.2.1/rabbitmq-server_4.2.1-1_all.deb
Resolving github.com… 140.82.121.4
Connecting to github.com|140.82.121.4|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 16789012 (16M) [application/vnd.debian.binary-package]
Saving to: ‘rabbitmq-server_4.2.1-1_all.deb’
rabbitmq-server_4.2.1-1_all.deb 100%[===========================================>] 16.01M 25.5MB/s in 0.6s
# 下载Erlang(RabbitMQ依赖)
$ wget https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5/erlang-26.2.5-1.el8.x86_64.rpm
# 输出示例如下:
–2026-04-04 10:15:00– https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5/erlang-26.2.5-1.el8.x86_64.rpm
Resolving github.com… 140.82.121.4
Connecting to github.com|140.82.121.4|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 23456789 (22M) [application/octet-stream]
Saving to: ‘erlang-26.2.5-1.el8.x86_64.rpm’
erlang-26.2.5-1.el8.x86_64.rpm 100%[===========================================>] 22.37M 25.5MB/s in 0.9s
4. Docker安装方式
Docker是部署RabbitMQ最简单的方式。from:www.itpux.com
$ docker pull rabbitmq:4.2.1-management
# 输出示例如下:
4.2.1-management: Pulling from library/rabbitmq
Digest: sha256:abc123def456…
Status: Downloaded newer image for rabbitmq:4.2.1-management
docker.io/library/rabbitmq:4.2.1-management
# 启动RabbitMQ容器
$ docker run -d –name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v /fgeudb/rabbitmq/data:/var/lib/rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=fgedu@123 \
rabbitmq:4.2.1-management
# 输出示例如下:
abc123def456789…
# 查看容器状态
$ docker ps
# 输出示例如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 rabbitmq:4.2.1-management “docker-entrypoint.s…” 5 seconds ago Up 4 seconds 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 0.0.0.0:15672->15672/tcp, 25672/tcp rabbitmq
# 查看日志
$ docker logs rabbitmq
# 输出示例如下:
2026-04-04 10:30:00.000000+00:00 [info] <0.222.0> RabbitMQ is ready to handle messages
2026-04-04 10:30:00.100000+00:00 [info] <0.222.0> Management plugin: HTTP (non-TLS) listener started on port 15672
2026-04-04 10:30:00.200000+00:00 [info] <0.222.0> Server startup complete; 4 plugins started.
# 访问管理界面
# 浏览器打开 http://192.168.1.51:15672
# 用户名: admin 密码: fgedu@123
5. 安装介质说明
RabbitMQ提供多种安装介质,用户可根据实际需求选择。学习交流加群风哥QQ113257174
安装包类型
RPM包:RHEL/CentOS/Fedora专用
DEB包:Ubuntu/Debian专用
通用二进制包:跨平台
Docker镜像:跨平台通用
使用RPM安装(RHEL/CentOS)
# yum install -y socat logrotate
# 输出示例如下:
Package socat-1.7.3.2-2.el7.x86_64 already installed and latest version
Package logrotate-3.8.6-21.el7.x86_64 already installed and latest version
Nothing to do
# 安装Erlang
# rpm -ivh erlang-26.2.5-1.el8.x86_64.rpm
# 输出示例如下:
Preparing… ################################# [100%]
Updating / installing…
1:erlang-26.2.5-1 ################################# [100%]
# 安装RabbitMQ
# rpm -ivh rabbitmq-server-4.2.1-1.el8.noarch.rpm
# 输出示例如下:
Preparing… ################################# [100%]
Updating / installing…
1:rabbitmq-server-4.2.1-1 ################################# [100%]
# 启动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:30:00 CST; 5s ago
Main PID: 12345 (beam.smp)
Status: “Initialized”
Tasks: 85 (limit: 4915)
Memory: 100.0M
CGroup: /system.slice/rabbitmq-server.service
├─12345 /usr/lib64/erlang/erts-14.2.1/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none…
├─12356 erl_child_setup 32768
└─12378 inet_gethost 4
# 查看版本
# rabbitmqctl version
# 输出示例如下:
4.2.1
6. 系统配置方法
RabbitMQ安装后需要进行基本配置,以下是常用配置方法。更多学习教程公众号风哥教程itpux_com
启用管理插件
# 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. Disable/enable plugin changes will take effect after a broker restart.
Started 3 plugins.
# 查看已启用的插件
# rabbitmq-plugins list
# 输出示例如下:
Listing plugins with pattern “.*” …
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@fgedu
|/
[ ] rabbitmq_amqp1_0 4.2.1
[ ] rabbitmq_auth_backend_cache 4.2.1
[ ] rabbitmq_auth_backend_http 4.2.1
[ ] rabbitmq_auth_backend_ldap 4.2.1
[ ] rabbitmq_auth_backend_oauth2 4.2.1
[ ] rabbitmq_auth_mechanism_ssl 4.2.1
[ ] rabbitmq_consistent_hash_exchange 4.2.1
[ ] rabbitmq_event_exchange 4.2.1
[ ] rabbitmq_federation 4.2.1
[ ] rabbitmq_federation_management 4.2.1
[ ] rabbitmq_jms_topic_exchange 4.2.1
[E*] rabbitmq_management 4.2.1
[e*] rabbitmq_management_agent 4.2.1
[ ] rabbitmq_mqtt 4.2.1
[ ] rabbitmq_peer_discovery_aws 4.2.1
[ ] rabbitmq_peer_discovery_common 4.2.1
[ ] rabbitmq_peer_discovery_consul 4.2.1
[ ] rabbitmq_peer_discovery_etcd 4.2.1
[ ] rabbitmq_peer_discovery_k8s 4.2.1
[ ] rabbitmq_prometheus 4.2.1
[ ] rabbitmq_random_exchange 4.2.1
[ ] rabbitmq_recent_history_exchange 4.2.1
[ ] rabbitmq_shovel 4.2.1
[ ] rabbitmq_shovel_management 4.2.1
[ ] rabbitmq_stomp 4.2.1
[ ] rabbitmq_stream 4.2.1
[ ] rabbitmq_stream_management 4.2.1
[ ] rabbitmq_top 4.2.1
[ ] rabbitmq_tracing 4.2.1
[ ] rabbitmq_trust_store 4.2.1
[e*] rabbitmq_web_dispatch 4.2.1
[ ] rabbitmq_web_mqtt 4.2.1
[ ] rabbitmq_web_mqtt_examples 4.2.1
[ ] rabbitmq_web_stomp 4.2.1
[ ] rabbitmq_web_stomp_examples 4.2.1
用户和权限管理
# rabbitmqctl add_user admin fgedu@123
# 输出示例如下:
Adding user “admin” …
Done. Don’t forget to grant the user permissions to some virtual hosts! See ‘rabbitmqctl set_permissions –help’.
# 设置用户角色
# rabbitmqctl set_user_tags admin administrator
# 输出示例如下:
Setting tags for user “admin” to [administrator] …
# 设置用户权限
# rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”
# 输出示例如下:
Setting permissions for user “admin” in vhost “/” …
# 查看用户列表
# rabbitmqctl list_users
# 输出示例如下:
Listing users …
user tags
admin administrator
guest administrator
# 删除默认guest用户(生产环境建议)
# rabbitmqctl delete_user guest
# 输出示例如下:
Deleting user “guest” …
配置文件
# vi /etc/rabbitmq/rabbitmq.conf
# 主要配置参数
listeners.tcp.default = 5672
management.tcp.port = 15672
# 内存限制
total_memory_available_override_value = 4GB
vm_memory_high_watermark.relative = 0.6
# 磁盘限制
disk_free_limit.absolute = 2GB
# 消息持久化
default_user = admin
default_pass = fgedu@123
# 日志配置
log.file.level = info
log.console = true
log.console.level = info
# 重启服务
# systemctl restart rabbitmq-server
# 输出示例如下:
# 查看状态
# rabbitmqctl status
# 输出示例如下:
Status of node rabbit@fgedu …
Runtime
OS PID: 12345
OS: Linux
Uptime (seconds): 300
Is under maintenance?: false
RabbitMQ version: 4.2.1
RabbitMQ release series support status: supported
Node name: rabbit@fgedu
Erlang configuration: Erlang/OTP 26 [erts-14.2.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit:ns]
Erlang processes: 345 used, 1048576 limit
Scheduler run queue length: 1
Switched from ERTS internal memory allocator to mseg_alloc
Memory binary: 12345678
Memory code: 23456789
Memory atom: 1234567
Memory processes: 34567890
Memory processes_unused: 12345678
Memory system: 45678901
Memory total: 123456789
Memory limit: 4294967296
7. 生产环境建议
在生产环境中使用RabbitMQ时,需要考虑以下因素:
性能优化配置
# vi /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 65535
fs.file-max = 100000
# 使配置生效
# sysctl -p
# 输出示例如下:
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
…
# 文件描述符限制
# vi /etc/security/limits.conf
rabbitmq soft nofile 65535
rabbitmq hard nofile 65535
# RabbitMQ高级配置
# vi /etc/rabbitmq/advanced.config
[
{rabbit, [
{tcp_listen_options, [
{backlog, 4096},
{nodelay, true},
{linger, {true, 0}},
{exit_on_close, false}
]},
{vm_memory_high_watermark, 0.6},
{disk_free_limit, {mem_relative, 1.5}},
{queue_index_embed_msgs_below, 4096}
]}
].
8. 集群配置方法
RabbitMQ支持集群部署,以下是集群配置方法:
集群部署
# vi /etc/hosts
192.168.1.51 rabbitmq-node1
192.168.1.52 rabbitmq-node2
192.168.1.53 rabbitmq-node3
# 同步Erlang Cookie(在node1执行)
# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmq-node2:/var/lib/rabbitmq/
# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmq-node3:/var/lib/rabbitmq/
# 设置Cookie权限(在node2和node3执行)
# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
# chmod 400 /var/lib/rabbitmq/.erlang.cookie
# 加入集群(在node2执行)
# rabbitmqctl stop_app
# 输出示例如下:
Stopping rabbit application on node rabbit@rabbitmq-node2 …
# rabbitmqctl join_cluster rabbit@rabbitmq-node1
# 输出示例如下:
Clustering node rabbit@rabbitmq-node2 with rabbit@rabbitmq-node1
# rabbitmqctl start_app
# 输出示例如下:
Starting node rabbit@rabbitmq-node2 …
completed with 3 plugins.
# 加入集群(在node3执行)
# rabbitmqctl stop_app
# rabbitmqctl join_cluster rabbit@rabbitmq-node1
# rabbitmqctl start_app
# 查看集群状态
# rabbitmqctl cluster_status
# 输出示例如下:
Cluster status of node rabbit@rabbitmq-node1 …
Basics
Cluster name: rabbit@rabbitmq-node1
Disk Nodes
rabbit@rabbitmq-node1
rabbit@rabbitmq-node2
rabbit@rabbitmq-node3
Running Nodes
rabbit@rabbitmq-node1
rabbit@rabbitmq-node2
rabbit@rabbitmq-node3
Versions
rabbit@rabbitmq-node1: RabbitMQ 4.2.1 on Erlang 26.2.5
rabbit@rabbitmq-node2: RabbitMQ 4.2.1 on Erlang 26.2.5
rabbit@rabbitmq-node3: RabbitMQ 4.2.1 on Erlang 26.2.5
镜像队列配置
# rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:”all”,”ha-sync-mode”:”automatic”}’
# 输出示例如下:
Setting policy “ha-all” for pattern “^” to “{“ha-mode”:”all”,”ha-sync-mode”:”automatic”}” with priority “0” for vhost “/” …
# 查看策略
# rabbitmqctl list_policies
# 输出示例如下:
Listing policies for vhost “/” …
vhost name pattern apply-to definition priority
/ ha-all ^ all {“ha-mode”:”all”,”ha-sync-mode”:”automatic”} 0
# 查看队列状态
# rabbitmqctl list_queues name policy slave_pids
# 输出示例如下:
Timeout: 60.0 seconds …
Listing queues for vhost “/” …
name policy slave_pids
test_queue ha-all [
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
