我有一個微服務應用程序,它有兩個服務和一個用作消息隊列的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
我們正在某個地方,至少現在已經解決了主機名。 –