You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22.04下Docker部署RabbitMQ发布订阅模式故障求助

解决Docker部署RabbitMQ无法使用发布/订阅模式及5672端口问题

1. 补全Docker端口映射配置

当前仅映射了管理端口8080:15672,但RabbitMQ的AMQP协议默认依赖5672端口,必须在启动容器时同步映射该端口。操作步骤如下:

  • 先停止并删除现有容器:
docker stop rabbitmq && docker rm rabbitmq
  • 重新启动容器,同时映射5672端口:
docker run -d --name rabbitmq -p 8080:15672 -p 5672:5672 rabbitmq:management

2. 验证5672端口可用性

容器启动后,在Ubuntu主机执行以下命令检查端口是否正常监听:

sudo lsof -i :5672

或使用netstat:

sudo netstat -tulpn | grep 5672

若输出中出现docker-proxy相关进程,说明端口映射生效。

3. 核对代码连接配置

确保发布/订阅代码中,RabbitMQ的连接参数正确:

  • 地址为localhost,端口为5672
  • 默认用户名/密码为guest/guest(未修改过的情况下)
    示例Python连接代码:
import pika

connection = pika.BlockingConnection(
    pika.ConnectionParameters(
        'localhost', 5672, '/', 
        pika.PlainCredentials('guest', 'guest')
    )
)
channel = connection.channel()

参数错误会导致客户端无法连接,管理界面也就不会显示队列、交换机等信息。

4. 检查容器内RabbitMQ服务状态

进入容器内部确认服务运行正常:

docker exec -it rabbitmq rabbitmqctl status

查看输出中running_applications字段,需包含rabbitmq_amqp1_0和rabbitmq_management,说明核心服务正常运行。

5. 管理界面验证资源状态

运行代码后,登录http://localhost:8080依次检查:

  • Exchanges:确认是否创建了发布订阅模式常用的fanout类型交换机
  • Queues:确认订阅端是否成功创建队列并绑定到目标交换机
  • Connections:查看是否有客户端成功连接到RabbitMQ

若代码未显式声明交换机、队列或绑定逻辑错误,管理界面不会展示相关资源。

内容的提问来源于stack exchange,提问作者rodolfofr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:30:34