Ошибка подключения при отправке сообщения на сервер RabbitMQ на EC2

У меня есть сервер RabbitMQ, работающий на AWS EC2. Я запустил код производителя и потребителя локально. Это работает. Я также могу получить доступ к веб-приложению управления rabbitMQ.

Когда я пытаюсь передать данные со своего ноутбука в EC2, я получаю эту ошибку в этой строке:

 connection = pika.BlockingConnection(pika.ConnectionParameters('xx.xx.xx.xx',5672,'/',credentials)) 

Файл "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", строка 339, в init файле self._process_io_for_connection_setup () "/ usr / local / lib / python2.7 / dist-packages / pika / adapters / blocking_connection.py ", строка 374, в файле _process_io_for_connection_setup self._open_error_result.is_ready)" /usr/local/lib/python2.7/dist-packages/pika/adapters /blocking_connection.py ", строка 395, в _flush_output вызывает исключения .ConnectionClosed () pika.exceptions.ConnectionClosed

где xx.xx.xx.xx: публичный IP-адрес моего экземпляра

Пожалуйста, сообщите мне, правильно ли я использую параметры. Какой должен быть IP-адрес, виртуальное имя хоста. Я проверил учетные данные, пользователь, которого я использую, существует, и у него есть права на доступ к виртуальному хосту '/'

Я внес необходимые изменения в группы безопасности. Это скриншот:

введите здесь описание изображения

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

Это мой полный код для справки:

import pika
print("Start")
credentials=pika.PlainCredentials('manish','manish')#RabbitMQ user         created on EC2
   connection=pika.BlockingConnection(pika.ConnectionParameters('xx.xx.xx.xx',5672,'/',credentials)) 
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
               routing_key='hello',
               body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()

person Manish    schedule 07.03.2017    source источник


Ответы (1)


Я попробовал socket_timeout, и у меня это сработало, вы можете попробовать что-то вроде:

credentials = pika.PlainCredentials('username,'password')
connection = pika.BlockingConnection(pika.ConnectionParameters('hostname',port,'virtual host',credentials,**socket_timeout=10000**))
person Rahul Jaiswal    schedule 14.04.2017