当前位置: 首页 > news >正文

使用Docker部署RabbitMQ

第一步:安装 RabbitMQ
# 1. 拉取镜像
docker pull rabbitmq:3.12.0-management

# 2. 启动容器(开放端口 + 数据持久化)
docker run -d \
  --name=share_rabbitmq \
  -p 5672:5672 \          # AMQP 协议端口
  -p 15672:15672 \        # 管理界面端口
  -v /opt/rabbitmq/data:/var/lib/rabbitmq \  # 数据持久化目录
  rabbitmq:3.12.0-management

第二步:安装延迟队列插件
1. 下载插件文件
  • 官方地址:rabbitmq_delayed_message_exchange-3.12.0.ez
  • 验证文件
    ls -l rabbitmq_delayed_message_exchange-3.12.0.ez
    # 预期输出:-rw-r--r-- 1 user user 48214 Mar 22 03:55 rabbitmq_delayed_message_exchange-3.12.0.ez

2. 复制插件到容器
# 将插件复制到容器内插件目录
docker cp rabbitmq_delayed_message_exchange-3.12.0.ez share_rabbitmq:/opt/rabbitmq/plugins

# 验证文件是否复制成功
docker exec share_rabbitmq ls /opt/rabbitmq/plugins | grep delay
# 预期输出:rabbitmq_delayed_message_exchange-3.12.0.ez

3. 启用插件
# 进入容器
docker exec -it share_rabbitmq /bin/bash

# 启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

# 退出容器
exit

# 重启容器使插件生效
docker restart share_rabbitmq

第三步:验证插件状态
# 1. 检查插件列表
docker exec share_rabbitmq rabbitmq-plugins list | grep delay
# 预期输出:[E*] rabbitmq_delayed_message_exchange

# 2. 管理界面验证
# 访问 http://服务器IP:15672,使用 guest/guest 登录
# 进入 Exchanges 页,创建交换机时选择类型 x-delayed-message

第四步:错误处理(来自历史问题)
问题1:容器未运行
# 检查容器状态
docker ps -a | grep share_rabbitmq

# 启动容器
docker start share_rabbitmq
问题2:插件未启用
# 强制重新启用插件
docker exec share_rabbitmq rabbitmq-plugins disable rabbitmq_delayed_message_exchange
docker exec share_rabbitmq rabbitmq-plugins enable rabbitmq_delayed_message_exchange
docker restart share_rabbitmq
问题3:权限不足
# 修改插件文件权限
docker exec share_rabbitmq chmod 644 /opt/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.12.0.ez
问题4:  Docker iptables 规则缺失

步骤 1:重启 Docker 服务

sudo systemctl restart docker

作用:强制 Docker 重新初始化网络规则和链。

步骤 2:手动重建 DOCKER 链

# 清理旧规则
sudo iptables -t nat -F

# 创建 DOCKER 链
sudo iptables -t nat -N DOCKER

# 绑定链到流量入口和出口
sudo iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
sudo iptables -t nat -A OUTPUT -m addrtype --dst-type LOCAL -j DOCKER

关键点:确保 nat 表的 PREROUTINGOUTPUT 链关联到 DOCKER 链。

步骤 3:加载必需的内核模块

# 加载网络桥接和 NAT 模块
sudo modprobe br_netfilter
sudo modprobe nf_nat

验证模块加载

lsmod | grep -E "br_netfilter|nf_nat"

步骤 4:启动容器

docker start share_rabbitmq

步骤 5:验证容器状态

docker ps | grep share_rabbitmq

预期输出

Plaintext

CONTAINER ID IMAGE STATUS PORTS NAMES a1b2c3d4e5f6 rabbitmq:3.12-management Up 2 seconds 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp share_rabbitmq
附:关键操作速查表
步骤命令
启动容器docker run -d --name=share_rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12.0-management
复制插件docker cp 插件文件 share_rabbitmq:/opt/rabbitmq/plugins
启用插件docker exec share_rabbitmq rabbitmq-plugins enable rabbitmq_delayed_message_exchange
验证插件docker exec share_rabbitmq rabbitmq-plugins list | grep delay
强制重启容器docker restart share_rabbitmq
注意事项
  1. 版本严格匹配:插件版本必须与 RabbitMQ 版本完全一致(均为 3.12.x)。
  2. 浏览器缓存:若管理界面未显示 x-delayed-message,请强制刷新(Ctrl+F5)。
  3. 生产环境建议:启用数据持久化(-v 挂载目录),避免容器重启后数据丢失。

通过以上步骤,RabbitMQ 延迟队列插件应正常工作。如遇其他问题,可运行 docker logs share_rabbitmq 查看日志定位原因。

相关文章:

  • 电子学会—2023年12月青少年软件编程(图形化)三级等级考试真题——打砖块游戏
  • 【SpringCloud】OpenFeign
  • 腾讯云宝塔安装ffmpeg
  • vue 对接 paypal 订阅和支付
  • Android10 系统截屏功能异常的处理
  • DeepSeek算力服务器的选型--青岛佰优联创新科技有限公司
  • OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap
  • SpringBoot3实战(SpringBoot3+Vue3基本增删改查、前后端通信交互、配置后端跨域请求、数据批量删除(超详细))(3)
  • Linux系统中关闭Docker服务并禁止其开机自启 、docker 安装目录结构分析 | 【du -sh *】
  • 2025年- G24-Lc98-217.包含重复(使用hashSet解决)-java版
  • 数据库相关(AI回答)
  • 自动驾驶背后的数学:ReLU,Sigmoid, Leaky ReLU, PReLU,Swish等激活函数解析
  • 在ASP.NET Core中使用NLog:配置与性能优化指南
  • Matplotlib完全指南:数据可视化从入门到实战
  • Python在图像处理领域的核心能力及典型应用场景(二)
  • 2014年计算机真题
  • LeetCode 2680.最大或值:位运算
  • 人工智能之数学基础:矩阵条件数在线性方程组求解中的应用
  • Visual Studio(VS)的 Release 配置中生成程序数据库(PDB)文件
  • 算法、数据结构、计算机网络,编译原理,操作系统常考题
  • 5天完成1000多万元交易额,“一张手机膜”畅销海内外的启示
  • 庆祝上海总工会成立100周年暨市模范集体劳动模范和先进工作者表彰大会举行,陈吉宁寄予这些期待
  • 中铁房地产24.7亿元竞得上海松江新城宅地,溢价率20.42%
  • “仓促、有限”,美英公布贸易协议框架,两国分别获得了什么?
  • 习近平同瑞典国王卡尔十六世·古斯塔夫就中瑞建交75周年互致贺电
  • 商务部再回应中美经贸高层会谈