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 新密码
相关推荐
初次攀爬者34 分钟前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
初次攀爬者2 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
让我上个超影吧3 天前
消息队列——RabbitMQ(高级)
java·rabbitmq
塔中妖3 天前
Windows 安装 RabbitMQ 详细教程(含 Erlang 环境配置)
windows·rabbitmq·erlang
断手当码农3 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
初次攀爬者3 天前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端
业精于勤_荒于稀3 天前
物流订单系统99.99%可用性全链路容灾体系落地操作手册
分布式
Ronin3053 天前
信道管理模块和异步线程模块
开发语言·c++·rabbitmq·异步线程·信道管理
Asher05093 天前
Hadoop核心技术与实战指南
大数据·hadoop·分布式
凉凉的知识库3 天前
Go中的零值与空值,你搞懂了么?
分布式·面试·go