gpt4 book ai didi

asp.net-core - 使用 docker 链接时拒绝连接到 RabbitMQ

转载 作者:行者123 更新时间:2023-12-04 03:11:42 25 4
gpt4 key购买 nike

我有一个微服务应用程序,它有两个服务和一个用作它们之间通信的消息队列的 rabbit mq。现在,我想将它们部署在 docker 上。我在 docker-compose.yml 文件中有以下代码:

版本:“3”服务:

  rabbitmq:
build: ./Rabbit
hostname: "rabbitmq"
container_name: "rabbitmq"
environment:
RABBITMQ_ERLANG_COOKIE: "cookie"
RABBITMQ_DEFAULT_USER: "user"
RABBITMQ_DEFAULT_PASS: "pass"
RABBITMQ_DEFAULT_VHOST: "/"
ports:
- "15672:15672"
- "5672:5672"
# labels:
# NAME: "rabbit1"
volumes:
- "/opt/rabbitmq:/var/lib/rabbitmq"

service1:
build: ./service1
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "8181:80"
depends_on:
- rabbitmq
links:
- rabbitmq
networks:
- webnet

所以,这里我在一个容器中构建RabbitMQ镜像,然后将这个容器链接到service1的容器。由于 service1 一个是 ASP.NET Core Web API,我使用以下设置连接到消息队列:

//Establish the connection
var factory = new ConnectionFactory
{
HostName = "rabbitmq",
Port = 5672,
UserName = "user",
Password = "pass",
VirtualHost = "/",
AutomaticRecoveryEnabled = true,
NetworkRecoveryInterval = TimeSpan.FromSeconds(15)
};

但是当我尝试运行 docker-compose up 时,我收到以下错误消息:

Unhandled Exception: RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address

也许我在 HostName 中有错误,但我不确定如何更正它。

最佳答案

有两个问题需要解决:

  1. 这两个服务不属于同一个网络所以需要将rabbitmq服务添加到webnet网络或者为两者新建一个网络服务

  2. rabbitmq 可能需要一些时间才能完全可用(即监听 5672 端口),因此您需要制作 service1服务等待rabbitmq服务;见this question关于这个问题。

关于asp.net-core - 使用 docker 链接时拒绝连接到 RabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44802594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com