Проблема с подключением к RabbitMQ на контейнере - PullRequest
0 голосов
/ 02 января 2019

ОБНОВЛЕНИЕ: Как оказалось, порт, который использует 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 = "/",
};

Примечание:

  • «Администратор» - это администратор.

  • Подключаемый модуль rabbitmq-management включен.

РЕДАКТИРОВАТЬ: rabbimq: 3-managament-alpine, видимо, является старым образом. Обновление до последней версии может помочь, но я не уверен. У кого-нибудь есть идеи по этому поводу?

1 Ответ

0 голосов
/ 02 января 2019

добавить секцию links: в контейнер rabbitmq из apis, иначе они не имеют никакого представления о имени хоста "rabbitmq".

Ссылки становятся устаревшими в командах docker, но не в docker-compose .

  feed.api:
    image: feed.api:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Feed/Feed.Api/Dockerfile
    depends_on:
     - sqldata
     - rabbitmq
    links:
     - 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"
    links:
     - rabbitmq
    networks:
     - customqueue

  rabbitmq:
    image: rabbitmq:3-management-alpine
    environment:
      RABBITMQ_DEFAULT_USER: "admin"
      RABBITMQ_DEFAULT_PASS: "password"
    ports:
      - "15672:15672"
      - "5672:5672" 
    networks:
     - customqueue 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...