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

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端口的连通性:
    telnet localhost 5672
    
    能连通说明端口没问题;如果不通,检查Docker容器是否正常运行,或者端口映射是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:00:12