RabbitMQ на Docker: Pika зависает при подключении, когда задан порт, в соединении отказано без порта

Я пытаюсь подключиться к очереди с помощью pika, запустить на моем локальном компьютере, а rabbitmq запустить в контейнере докера. Я могу получить доступ к rabbitmq на http://0.0.0.0:15677 с помощью обеих команд curl и просмотрев его в веб-браузер, поэтому я знаю, что rabbitmq выглядит так, как будто он работает нормально, однако я не могу подключиться к нему с помощью python.

Когда я не включаю порт в свой pika.ConnectionParemeters, соединение сразу же отклоняется. Когда я включаю порт, соединение зависает и никогда не отображается на стороне rabbitmq. Не уверен, что с докером или с pika происходит что-то странное, но стоит упомянуть, что мой код подключается к идентичному серверу rabbitmq, который не является контейнером докера.

Я использую новейшую версию OSX и использую python 2.7 и pika 0.10.0.

RMQ_URL = '0.0.0.0'
HOST_QUEUE = 'snarfer'
VHOST = 'beta'
RMQ_PORT = 15677
ROUTING_KEY = 'snarfer.discovery'


self.connection = pika.BlockingConnection(pika.ConnectionParameters(
host=s.RMQ_URL, virtual_host=s.VHOST, port=s.RMQ_PORT))

*** РЕДАКТИРОВАТЬ: добавление учетных данных в ConnectionParameters ничего не делает.


person hotPocket    schedule 19.07.2016    source источник
comment
как выглядят ваши параметры подключения? В чем ценность хоста?   -  person ldg    schedule 20.07.2016
comment
что сказал ldg - также код   -  person cantSleepNow    schedule 20.07.2016


Ответы (1)


Если вы используете порт TCP веб-интерфейса управления для своего клиента AMQP, он не может работать: RabbitMQ ожидает HTTP-запросы на этом порту, а не кадры AMQP. Вот почему кажется, что клиент зависает.

Если вы не укажете порт TCP, он будет использовать 5672, порт AMQP по умолчанию. Согласно порту пользовательского интерфейса управления (15677), я полагаю, ваш RabbitMQ прослушивает соединения AMQP на порту 5677, потому что по умолчанию плагин управления прослушивает $ amqp_port + 10000.

Таким образом попробуйте с RMQ_PORT = 5677.

Если это не сработает, дважды проверьте конфигурацию RabbitMQ и / или посмотрите в пользовательском интерфейсе управления, чтобы узнать порт AMQP.

person Jean-Sébastien Pédron    schedule 21.07.2016