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 新密码
相关推荐
枫叶林FYL22 分钟前
【自然语言处理 NLP】8.2 Ring Attention 与分布式长上下文训练
人工智能·分布式·自然语言处理
薛定猫AI26 分钟前
【深度解析】Meta Muse Spark:原生多模态推理模型与多智能体编排的工程化实践
大数据·分布式·spark
开心码农1号12 小时前
Java rabbitMQ如何发送、消费消息、全套可靠方案
java·rabbitmq·java-rabbitmq
小白学大数据14 小时前
Scrapy 分布式爬虫:大规模采集汽车之家电车评论
开发语言·分布式·爬虫·scrapy
仗剑_走天涯14 小时前
hadoop reduce阶段 对象重用问题
大数据·hadoop·分布式
电磁脑机15 小时前
无总线场同步:意识本质、AGI困境与脑机革命的核心理论重构
分布式·神经网络·架构·信号处理·agi
leo_messi9415 小时前
RabbitMq(五) -- SpringBoot整合 RabbitMQ 完整实现
spring boot·rabbitmq·java-rabbitmq
半桶水专家15 小时前
kafka数据删除策略详解
分布式·kafka
一个有温度的技术博主15 小时前
Lua语法进阶:函数封装与条件控制的艺术
redis·分布式·缓存·lua
无心水15 小时前
2、5分钟上手|PyPDF2 快速提取PDF文本
java·linux·分布式·后端·python·架构·pdf