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
相关产品推荐
相关产品推荐

