Docker部署RabbitMQ后,op-rabbit连接失败问题求助
解决op-rabbit连接Docker中RabbitMQ的问题
让我帮你一步步排查这个连接失败的问题:
1. 先修正连接地址的语法错误
你报错里的地址 amqp://guest@{rabbitTestHost:5672}:5672 明显有格式问题——大括号的写法不对,还重复了端口号。这里需要根据运行环境填写正确的主机地址:
- 如果Scala程序在宿主机运行,且Docker容器映射了端口到宿主机,主机地址填
localhost,完整连接串是amqp://guest:guest@localhost:5672 - 如果Scala程序也在Docker容器中,且和RabbitMQ容器在同一个Docker网络里,直接用RabbitMQ的容器名
rabbitTestQueue作为主机地址,连接串是amqp://guest:guest@rabbitTestQueue:5672
2. 确认Docker端口映射是否正确
看你提供的docker ps输出,PORTS列显示4369/tcp, 5671-5672/tcp, 25672/tcp——这说明启动容器时没有把容器的5672端口映射到宿主机!宿主机程序无法直接访问容器内部端口,必须添加端口映射参数:
# 先停止并删除现有容器 docker stop rabbitTestQueue && docker rm rabbitTestQueue # 重新启动容器,映射AMQP端口和管理界面端口 docker run -d --name rabbitTestQueue -p 5672:5672 -p 15672:15672 rabbitmq:3
3. 检查op-rabbit的application.conf配置
你的配置有几个需要调整的地方:
- 确保配置了正确的
host和port,完整基础配置示例:rabbit { host = "localhost" # 根据环境换成容器名rabbitTestQueue port = 5672 username = "guest" password = "guest" topic-exchange-name = "rabbitTestExchange" # 交换机名称和容器名无关,建议单独命名 channel-dispatcher = "op-rabbit.default-channel-dispatcher" default-channel-dispatcher { type = Dispatcher executor = "op-rabbit.default-executor" } } - 注意
topic-exchange-name是交换机的名字,和RabbitMQ容器名没有关联,不需要保持一致。
4. 验证RabbitMQ服务状态
- 如果映射了15672端口,打开
http://localhost:15672,用guest/guest登录管理界面,确认RabbitMQ服务正常运行。 - 也可以用telnet测试宿主机到5672端口的连通性:
能连通说明端口没问题;如果不通,检查Docker容器是否正常运行,或者端口映射是否正确。telnet localhost 5672
内容的提问来源于stack exchange,提问作者ScalaBoy
相关产品推荐
相关产品推荐

