2017-03-07 66 views
0

我在AWS EC2上運行我的RabbitMQ服務器 我已經在本地運行生產者和使用者代碼。這是工作。 我也可以訪問rabbitMQ管理web應用程序。向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,in _process_io_for_connection_setup self._open_error_result.is_ready) 文件「/usr/local/lib/python2.7/dist-packages/pik A /適配器/ blocking_connection.py」,線路395,在_flush_output 提高exceptions.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() 

回答

0

我試圖socket_timeout和它的工作對我來說,你可以嘗試像:

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