在EC2上向RabbitMQ服务器发送消息时出现连接错误

时间:2017-03-07 08:13:26

标签: python amazon-ec2 rabbitmq amqp pika

我在AWS EC2上运行了RabbitMQ服务器 我在本地运行了生产者和消费者代码。这是工作。 我也可以访问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地址,虚拟主机名。 我检查了凭据,我使用的用户存在,并且它有权访问' /'虚拟主机

我已在安全组中进行了必要的更改。 这是它的截图:

enter image description here

当我在实例中运行相同的生产者代码时,它正常工作。没有例外,消费者也能够接收它。

这是我的完整代码供参考:

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()

1 个答案:

答案 0 :(得分:0)

我尝试了socket_timeout并且它对我有用,你可以尝试类似:

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