CenOS7安装RabbitMQ(含延迟队列插件)

最近又需要用到 MQ,因为考虑到 RocketMQ 的延迟队列时间不能随意控制,这一还是选择了 RabbitMQ,这里记录一下安装步骤

首先我们需要先安装 erlang,RabbitMQ 是依赖这个语言环境的

bash 复制代码
# 编译 Erlang 必备依赖,防止后面 erlang 编译不成功
yum install -y gcc gcc-c++ make wget ncurses-devel openssl-devel unixODBC-devel libcurl-devel zlib-devel

# 切换目录,我们安装到指定的地方
cd /usr/local/src

# 下载语言安装包
wget https://github.com/erlang/otp/releases/download/OTP-25.3.2/otp_src_25.3.2.tar.gz

# 解压
tar -zxvf otp_src_25.3.2.tar.gz

# 进入目录
cd otp_src_25.3.2

# 配置
./configure --prefix=/usr/local/erlang

# 编译
make -j$(nproc)
# 安装
make install

# 设置环境变量
export ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:/usr/local/rabbitmq/sbin:$PATH

# 验证版本
erl -version

看到下面这样的就是成功了

bash 复制代码
(base) [root@ecm-74de otp_src_25.3.2]# erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 13.2.2

接下来安装 RabbitMQ

bash 复制代码
# 切换目录
cd /usr/local/src

# 下载安装包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.16/rabbitmq-server-generic-unix-3.11.16.tar.xz

# 解压
tar -xvf rabbitmq-server-generic-unix-3.11.16.tar.xz

# 移动到指定目录
mv rabbitmq_server-3.11.16 /usr/local/rabbitmq

# 创建数据目录,放到其它挂载盘
mkdir -p /data/rabbitmq/{mnesia,log,tmp}

# 配置mq路径
mkdir -p /usr/local/rabbitmq/etc/rabbitmq

# 创建一个配置文件
vim /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf

# 把下面的内容放进去,记得保存
# 允许远程管理
loopback_users.none = true
listeners.tcp.default = 5672
management.listener.port = 15672
management.listener.ip   = 0.0.0.0

# 一样的配置一下环境变量,创建一个文件
vim /etc/profile.d/rabbitmq.sh

# 把下面的内容放进去,记得保存
# RabbitMQ 和 Erlang 路径
export PATH=/usr/local/erlang/bin:/usr/local/rabbitmq/sbin:$PATH

# 刷新一下环境
source /etc/profile

# 安装延迟队列查询
# 先进入插件目录
cd /usr/local/rabbitmq/plugins

# 下载插件,下载完注意检查一下,这个文件正常应该是40多KB
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.11.1/rabbitmq_delayed_message_exchange-3.11.1.ez

# 启用插件
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

到这里就都安装好了,接下来我们启动它,配置启动服务

bash 复制代码
# 创建服务文件
vim /etc/systemd/system/rabbitmq.service

# 把下面的内容放进去
[Unit]
Description=RabbitMQ broker
After=network.target epmd.service
Wants=network.target

[Service]
Type=simple
User=root
Environment=RABBITMQ_USE_LONGNAME=true
Environment=RABBITMQ_NODENAME=rabbit@ecm-74de
Environment=RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
Environment=RABBITMQ_LOG_BASE=/data/rabbitmq/log
Environment=RABBITMQ_ERLANG_COOKIE=GPIAEBTOKICIOJLCRTIU
# 指定完整路径启动和停止
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop
# 把 PATH 也加上,保证 systemd 能找到 erl 等命令
Environment=PATH=/usr/local/erlang/bin:/usr/local/rabbitmq/sbin:/usr/bin:/bin
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

上面的配置里面有个 ecm-74de,注意这是我服务器的名称,可以用下面命令查看一下自己的

bash 复制代码
hostname -f

加入到开机自启里面

bash 复制代码
# 重新加载 systemd
systemctl daemon-reload

# 设置开机自启
systemctl enable rabbitmq

# 启动服务
systemctl start rabbitmq

# 查看状态
systemctl status rabbitmq -l

这样就是启动成功

bash 复制代码
(base) [root@ecm-74de plugins]# systemctl status rabbitmq -l
● rabbitmq.service - RabbitMQ broker
   Loaded: loaded (/etc/systemd/system/rabbitmq.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2026-01-15 14:41:36 CST; 688ms ago
  Process: 22300 ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop (code=exited, status=69)
 Main PID: 22348 (rabbitmq-server)
    Tasks: 36
   Memory: 69.4M
   CGroup: /system.slice/rabbitmq.service
           ├─22348 /bin/sh /usr/local/rabbitmq/sbin/rabbitmq-server
           ├─22353 /usr/local/erlang/lib/erlang/erts-13.2.2/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 -sbwtdcpu none -sbwtdio none -B i -- -root /usr/local/erlang/lib/erlang -bindir /usr/local/erlang/lib/erlang/erts-13.2.2/bin -progname erl -- -home /root -- -pa  -noshell -noinput -s rabbit boot -boot start_sasl -syslog logger [] -syslog syslog_error_logger false -kernel prevent_overlapping_partitions false
           ├─22359 erl_child_setup 65536
           └─22468 /usr/local/erlang/lib/erlang/erts-13.2.2/bin/beam.smp -- -root /usr/local/erlang/lib/erlang -bindir /usr/local/erlang/lib/erlang/erts-13.2.2/bin -progname erl -- -home /root -- -boot no_dot_erlang -sname epmd-starter-566993386 -noshell -noinput -s erlang halt

Jan 15 14:41:36 ecm-74de systemd[1]: Started RabbitMQ broker.

然后我们创建一个用户

bash 复制代码
# 创建用户,密码自己设
rabbitmqctl add_user admin StrongPassword123

# 给用户管理员权限
rabbitmqctl set_user_tags admin administrator

# 给用户设置所有虚拟主机的权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

访问 http://127.0.0.1:15672(换成自己ip),登录一下试试,可能需要开放防火墙端口,页面端口是 15672 ,后面如果要用程序连接还需要开放 5672 端口

最后记得修改默认用户的密码,防止万一端口什么的被人爆破

bash 复制代码
# 修改 guest 用户密码为你想要的新密码
rabbitmqctl change_password guest 新密码
相关推荐
ALex_zry1 天前
Redis Cluster 分布式缓存架构设计与实践
redis·分布式·缓存
为什么不问问神奇的海螺呢丶1 天前
n9e categraf rabbitmq监控配置
分布式·rabbitmq·ruby
TTBIGDATA1 天前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger
m0_687399841 天前
telnet localhost 15672 RabbitMQ “Connection refused“ 错误表示目标主机拒绝了连接请求。
分布式·rabbitmq
陌上丨1 天前
生产环境分布式锁的常见问题和解决方案有哪些?
分布式
新新学长搞科研1 天前
【智慧城市专题IEEE会议】第六届物联网与智慧城市国际学术会议(IoTSC 2026)
人工智能·分布式·科技·物联网·云计算·智慧城市·学术会议
Ronin3051 天前
日志打印和实用 Helper 工具
数据库·sqlite·rabbitmq·文件操作·uuid生成
泡泡以安1 天前
Scrapy分布式爬虫调度器架构设计说明
分布式·爬虫·scrapy·调度器
没有bug.的程序员1 天前
RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南
java·分布式·kafka·rocketmq·分布式消息·引擎内核·事务金融
上海锟联科技1 天前
250MSPS DAS 在地铁监测中够用吗?——来自上海锟联科技的工程实践
分布式·科技·分布式光纤传感·das解调卡·光频域反射·das