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 新密码
相关推荐
linweidong3 小时前
中科曙光Java后端开发面试题及参考答案
分布式·设计模式·spring mvc·tcp协议·三次握手·后端开发·java面经
独自破碎E3 小时前
说说RabbitMQ的集群模式
rabbitmq
m0_748252383 小时前
Ruby 数据类型概述
开发语言·mysql·ruby
rustfs3 小时前
使用 RustFS和 Arq,打造 PC 数据安全备份之道
分布式·docker·云原生·rust·开源
后季暖4 小时前
kafka原理详解
分布式·kafka
回家路上绕了弯4 小时前
Seata分布式事务实战指南:从原理到微服务落地
分布式·后端
LDG_AGI4 小时前
【机器学习】深度学习推荐系统(二十六):X 推荐算法多模型融合机制详解
人工智能·分布式·深度学习·算法·机器学习·推荐算法
利刃大大4 小时前
【RabbitMQ】重试机制 && TTL && 死信队列
分布式·后端·消息队列·rabbitmq·队列
talle20215 小时前
Hadoop分布式资源管理框架【Yarn】
大数据·hadoop·分布式