2016-02-29 160 views
1

我正嘗試使用pika連接到我的遠程rabbitmq,但我得到Connectionclosed()錯誤。我已經在來賓用戶的rabbit.config中進行了必要的更改,以允許所有連接以及來自我的Java代碼的相同連接。我甚至嘗試創建一個擁有所有權限並連接它的新用戶,但它仍然不起作用。儘管我的本地主機相同的代碼工作正常。任何人都可以讓我知道我在這裏做錯了什麼?無法使用pika連接到遠程rabbitmq服務器

def queue_message(message, queue): 
    credentials = pika.PlainCredentials('xxxx', 'xxxx') 
    parameters = pika.ConnectionParameters('remote-server', 
            5672, 
            '/', 
            credentials) 
    connection = pika.BlockingConnection(parameters) 
    channel = connection.channel() 
    channel.queue_declare(queue='python_update_queue') 
    channel.basic_publish(exchange='update.fanout', 
        body=message) 
    logger.info("Sent message: {} to queue: {}".format(message, queue)) 
    print 'message sent' 
    connection.close() 

下面是錯誤,我得到:

app/project/rabbitmq.py" in queue_message 
connection = pika.BlockingConnection(parameters) 
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in __init__ 
    self._process_io_for_connection_setup() 
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in ss_io_for_connection_setup 
         self._open_error_result.is_ready) 
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in _flush_output 
     raise exceptions.ConnectionClosed 

回答

5

連接超時添加到您的連接參數 - 你可能運行到這裏的連接速度不夠快超時問題,跨越網絡。

也,你的代碼是顯式調用connection.close() ...所以,可能是爲什麼你的連接被關閉

+1

你是對這個超時。 pika中的默認超時設置爲0.25秒。增加這個超時之後,一切都一直順利進行。謝謝! – Crane

+0

天哪,我一直在尋找小時,直到我發現這個套接字超時提示。非常感謝,現在終於開始工作了...... – schankam

0

如果您連接到遠程服務器的RabbitMQ,看看這個:

  1. 遠程服務器端口開放防火牆

  2. 遠程服務器有公網IP和RabbitMQ的用戶必須在該服務器

  3. RabbitMQ的訪問服務器正在激活運行
4

這確實是一個超時問題。在增加連接參數中的超時之後,連接已正確建立。

parameters = pika.ConnectionParameters('remote-server', 
            5672, 
            '/', 
            socket_timeout=2) 
-1
  • 添加管理員標籤用戶管理;

    rabbitmqctl set_user_tags admin administrator  
    
  • 足夠的權限添加到用戶管理

    rabbitmqctl set_permissions -p/admin ".*" ".*" ".*"