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

Docker+RabbitMQ+NestJS微服务出现406 PRECONDITION_FAILED错误如何解决

解决方案
  • 首先修正compose.yml的缩进错误:你当前配置里api_consumer下的env_file、restart、depends_on配置项缩进和api_consumer同级,不属于该服务的配置,导致api_consumer启动时没有加载环境变量、没有配置重启策略,大概率启动失败没有注册消费者。修正为所有api_consumer的配置项缩进与build同级即可。
  • 调整api_consumer的启动逻辑:你当前代码中会先加载AWS配置,加载完成后才执行app.listen()注册RabbitMQ消费者。如果AWS配置加载耗时过长、甚至加载失败,消费者就不会上线。可以将app.listen()提到AWS配置加载逻辑之前,先完成微服务注册,再执行其他初始化逻辑。
  • 给RabbitMQ服务增加健康检查,确保业务服务启动前RabbitMQ已经完全就绪:
    在rabbitmq服务配置中新增如下内容:
healthcheck:
  test: ["CMD", "rabbitmqctl", "status"]
  interval: 5s
  timeout: 10s
  retries: 5

同时将两个业务服务的depends_on修改为:

depends_on:
  rabbitmq:
    condition: service_healthy
  • 临时注释掉RabbitMQ的本地配置挂载:你本地的rabbitmq.conf可能存在错误配置,比如禁用了direct reply-to、或者设置了消费者相关限制,先移除- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf配置项,用RabbitMQ默认配置启动测试。
  • 手动清理RabbitMQ残留数据:执行docker volume ls找到RabbitMQ对应的存储卷,执行docker volume rm <对应卷名>手动删除,再重启所有服务,确保RabbitMQ是完全干净的初始状态。
  • 测试阶段可以先注释掉AWS配置加载相关代码,排除第三方服务加载失败导致消费者未注册的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:24:02