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

RabbitMQ传输错误排查:Docker Compose启动连接失败解决方案

RabbitMQ容器连接失败问题解决

问题描述

服务此前运行正常,执行docker-compose up或up --build启动容器后,出现RabbitMQ传输错误,日志如下:

ERROR [Server] Connection to transport failed. Trying to reconnect...
ERROR [Server] Error: getaddrinfo EAI_AGAIN root2

错误原因

getaddrinfo EAI_AGAIN root2 表明应用容器无法解析主机名root2,即RabbitMQ的地址配置在Docker网络中无法被识别,同时可能存在用户密码不匹配的问题。

解决方案

1. 修正RabbitMQ主机名配置

Docker容器间通过服务名进行DNS解析,你需要将.env中的RABBITMQ_HOST=root2改为Docker Compose配置文件中RabbitMQ服务的实际名称。
比如你的docker-compose.yml里RabbitMQ服务定义为:

services:
  rabbitmq:
    image: rabbitmq:3-management
    environment:
      RABBITMQ_DEFAULT_USER: Naox
      RABBITMQ_DEFAULT_PASS: root

则.env中的主机配置需改为:

RABBITMQ_HOST=rabbitmq

2. 统一用户密码配置

你的.env中RABBITMQ_USER=Norm、RABBITMQ_PASS=root,但RabbitMQ容器的默认用户是Naox(来自RABBITMQ_DEFAULT_USER=Naox),两者不匹配会导致认证失败。

  • 推荐方案:修改应用的.env,将用户密码与RabbitMQ容器保持一致:
    RABBITMQ_USER=Naox
    RABBITMQ_PASS=root
    

3. 确保容器处于同一Docker网络

  • 若应用和RabbitMQ在同一个docker-compose.yml文件中,默认会加入同一个专属网络,无需额外配置;
  • 若为分开的Compose文件,需手动指定共享网络,比如在两个Compose中添加:
    networks:
      app-network:
        external: true
    
    并在每个服务的networks字段中指定该网络。

4. 修正代码变量命名错误(可选但建议)

在LibService中,变量名porta实际对应RabbitMQ的主机地址,命名混淆易引发后续维护问题,建议修改为:

@Injectable()
export class LibService {
    constructor(
        private readonly configService: ConfigService
    ){}

    moduloRmq(queue: string): RmqOptions {
        const usuario = this.configService.get('RABBITMQ_USER')
        const senha = this.configService.get('RABBITMQ_PASS');
        const host = this.configService.get('RABBITMQ_HOST'); // 修正变量名

        return {
            transport: Transport.RMQ,
            options: {
                urls: [`amqp://${usuario}:${senha}@${host}`],
                noAck: false,
                queue,
                queueOptions: {
                    durable: true
                }
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者J. Maciel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:46:24