Docker Compose部署下Hosted Service通过MassTransit连接RabbitMQ失败求助
问题根因
从错误日志可直接定位核心问题:MassTransit的RabbitMQ连接地址配置错误
- 日志显示程序尝试连接
localhost:5672,在Docker Compose部署场景下,每个容器的localhost指向自身,无法访问到同网络下的RabbitMQ服务容器 - 你在本地能正常打开RabbitMQ管控台,是因为做了宿主机到RabbitMQ容器的端口映射,从宿主机访问
localhost:15672会转发到RabbitMQ容器,但容器内部服务之间的访问不能走宿主机端口映射
修复方案
- 修改
appsettings.json里的MassTransit RabbitMQ连接地址,将原来的localhost替换为你配置的RabbitMQ容器主机名rabbitmq,最终连接地址为rabbitmq://rabbitmq:5672/,用户名、密码和vhost保持原有配置即可 - 建议在docker-compose.yaml的
hostedservice配置段中添加启动依赖,避免RabbitMQ未启动完成就启动业务服务导致首次连接失败,修改后配置如下:
hostedservice: environment: - ASPNETCORE_ENVIRONMENT=development ports: - "80" depends_on: - rabbitmq3
- 重启整个Docker Compose服务即可生效
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

