У меня есть сервер 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()