Отправка сообщений RabbitMq между контейнерами Docker с использованием docker-compose - PullRequest
1 голос
/ 23 мая 2019

Поэтому моя цель - создать несколько контейнеров, которые взаимодействуют между собой с помощью сообщений rabbitmq (сервер rabbitmq находится в отдельном контейнере)

rabbit.py

class Rabbit:
    host = 'rabbitmq-host'
    userid = 'test'
    password = 'test'


class Consumer(Rabbit):

    def __init__(self, exchange_name):
        self.exchange_name = exchange_name
        self.connection = None
        try:
            credentials = pika.PlainCredentials(self.userid, self.password)
            params = pika.ConnectionParameters(self.host, 5672, '/', credentials)
            self.connection = pika.BlockingConnection(params)
        except Exception as ex:
            print(ex)
            if self.connection is not None and self.connection.is_open:
                self.connection.close()
            raise ex

        self.channel = self.connection.channel()

Проверка учетных данных: тест существует, Я перепроверил.

Затем из другого файла (main.py) создается Потребитель

c = Consumer('media')

docker-compose.yml

version: '3'
services:

rabbitmq-server:
  image: "rabbitmq:3-management"
  hostname: "rabbitmq-host"
  environment:
    RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
    RABBITMQ_DEFAULT_USER: "test"
    RABBITMQ_DEFAULT_PASS: "test"
    RABBITMQ_DEFAULT_VHOST: "/"
  ports:
    - "15672:15672"
    - "5672:5672"
  labels:
    NAME: "rabbitmq1"


info-getter:
  build: ./info-getter
  depends_on:
    - rabbitmq-server
  tty: true
  ports:
    - "3000:3000"

При тестированииЯ запускаю сервер rabbitmq в контейнере, но приложение из локальной машины все работает, но когда я запускаю 'docker-compose up', я получаю следующее исключение:

info-getter_1      | 
info-getter_1      | Traceback (most recent call last):
info-getter_1      |   File "main.py", line 10, in <module>
info-getter_1      |     c = Consumer('media')
info-getter_1      |   File "libs/rabbit.py", line 27, in __init__
info-getter_1      |     raise ex
info-getter_1      |   File "libs/rabbit.py", line 22, in __init__
info-getter_1      |     self.connection = pika.BlockingConnection(params)
info-getter_1      |   File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py", line 360, in __init__
info-getter_1      |     self._impl = self._create_connection(parameters, _impl_class)
info-getter_1      |   File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py", line 451, in _create_connection
info-getter_1      |     raise self._reap_last_connection_workflow_error(error)
info-getter_1      | pika.exceptions.AMQPConnectionError
services_info-getter_1 exited with code 1

Куда я иду не так?

Также я хотел бы добавить, что, несмотря на то, что у меня задано значение «depen_on», после того, как я запустил «docker-compose up», журнал info-getter появляется перед журналом rabbitmq-server.

1 Ответ

0 голосов
/ 23 мая 2019

Попробуйте изменить хост на rabbitmq-server -

class Rabbit:
    host = 'rabbitmq-server'
    userid = 'test'
...