我有一个微服务应用程序,它有两个服务和一个用作消息队列的rabbit mq用于它们之间的通信。现在,我想将它们部署在docker上。我在docker-compose.yml
文件下面的代码:当使用docker链接时拒绝连接到RabbitMQ
版本:“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核心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
,我收到以下错误信息:
未处理的异常: RabbitMQ.Client.Exceptions.BrokerUnreachableException:所述 指定的端点没有一个是可到达---> RabbitMQ.Client.Exceptions.ConnectFailureException:连接失败 ---> System.Net.Internals.SocketExceptionFactory + ExtendedSocketEx ception: 没有这样的设备或地址
也许我在HostName
一个错误,但我不知道如何纠正它。
他们并不在同一个网络上,把'网络: - webnet'为'rabbitmq'服务,或创建另一个网络只是他们两个 –
的这个我试过,但它仍然没有工作,但异常是以下'''未处理的异常:RabbitMQ.Client.Exceptions.BrokerUnreachableException:没有指定的端点可达---> RabbitMQ.Client.Exceptions.ConnectFailureException:连接失败---> System.Net.Internals.SocketExceptionFactory + ExtendedSocketException:连接被拒绝172.21.0.3:5672''' – StefanL19
我们正在某个地方,至少现在已经解决了主机名。 –