ОБНОВЛЕНИЕ: Как оказалось, порт, который использует rabbitmq, не является 15672. Я изменил номер порта с 15672 на 5672 в блоке ConnectionFactory и успешно подключился.
Я пытался разработать простую архитектуру микросервисов для изучения и изучения docker & rabbitmq. Итак, я написал файл docker-compose.yml, как показано ниже:
version: '3.4'
networks:
customqueue:
services:
feed.api:
image: feed.api:${TAG:-latest}
build:
context: .
dockerfile: src/Services/Feed/Feed.Api/Dockerfile
depends_on:
- sqldata
- rabbitmq
ports:
- "8000:80"
networks:
- customqueue
like.api:
image: like.api:${TAG:-latest}
build:
context: .
dockerfile: src/Services/Like/Like.Api/Dockerfile
depends_on:
- rabbitmq
ports:
- "7000:70"
networks:
- customqueue
rabbitmq:
image: rabbitmq:3-management-alpine
environment:
RABBITMQ_DEFAULT_USER: "admin"
RABBITMQ_DEFAULT_PASS: "password"
ports:
- "15672:15672"
- "5672:5672"
networks:
- customqueue
feed.api предназначен для подписчика, like.api предназначен для издателя. Однако, когда я пытаюсь запустить код ядра .net feed.api, я получаю эту ошибку «Ни одна из конечных точек не достижима» с RabbitMQ. RabbitMQ на контейнере работает нормально. Я пытаюсь определить ConnectionFactory, как показано ниже в Startup.cs в Feed.Api проекте.
var factory = new ConnectionFactory()
{
HostName = "rabbitmq",
UserName = "admin",
Password = "password",
Port = 15672,
Protocol = Protocols.DefaultProtocol,
RequestedConnectionTimeout = 2000,
VirtualHost = "/",
};
Примечание:
РЕДАКТИРОВАТЬ: rabbimq: 3-managament-alpine, видимо, является старым образом. Обновление до последней версии может помочь, но я не уверен. У кого-нибудь есть идеи по этому поводу?