嘗試使用Python將數據發送到RabbitMQ隊列。Python Pika和RabbitMQ連接發佈
我還沒有配置服務器,但它正在運行其他進程。我有一個工作登錄,可以毫無問題地訪問Web輸出。
的示例代碼的RabbitMQ給出了Python使用鼠兔:
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='xxx.xxx.xxx.xxx:xxxxx'))
channel = connection.channel()
channel.queue_declare(queue='Test')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
這將運行並踢我了與:
pika.exceptions.ConnectionClosed
沒有太多去,但安全的假設是登錄的問題,因爲示例代碼沒有任何登錄信息。
所以我加了它。
import pika
import sys
try:
credentials = pika.PlainCredentials('username', 'password')
connection = pika.BlockingConnection(pika.ConnectionParameters('xxx.xxx.xxx.xxx',
xxxxx,
'virtualhostnamehere',
credentials,))
channel = connection.channel()
channel.queue_declare(queue='Test')
channel.basic_publish(exchange='amq.direct',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
except:
e = sys.exc_info()[0]
print e
這似乎給了我前流連了好幾分鐘:
<class 'pika.exceptions.IncompatibleProtocolError'>
服務器運行的其他服務很好,但我似乎無法找出什麼我做錯了。
登錄是正確的。虛擬主機名稱是正確的。主持人是正確的。交換名稱是正確的。
希望在正確的方向上的一個點。
更新:
我試過使用URLParameters以及相同的結果。
parameters = pika.URLParameters('amqp://username:[email protected]:xxxxx/notmyvhostname')
connection = pika.BlockingConnection(parameters)
您正在使用哪個端口和用戶名? – cantSleepNow
我用「用戶名」和「密碼」替代了登錄名,端口號爲xxxxx。 – PoweredByCoffee
但我猜這個端口不會改變任何東西。它的端口是15672,登錄和瀏覽器輸出一樣。 – PoweredByCoffee