我有一个微服务应用程序,它有两个服务和一个用作它们之间通信的消息队列的rabbit mq。现在,我想将它们部署在docker上。我在以下代码中docker-compose.yml
file:
版本:“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
. Since 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
,我收到以下错误消息:
未处理的异常:
RabbitMQ.Client.Exceptions.BrokerUnreachableException:没有一个
指定端点可达 --->
RabbitMQ.Client.Exceptions.ConnectFailureException:连接失败
---> System.Net.Internals.SocketExceptionFactory + ExtendedSocketException:
没有这样的设备或地址
也许我有一个错误HostName
但我不知道如何纠正它。