尝试使用Python将数据发送到RabbitMQ队列。
我还没有配置服务器,但它正在为其他进程运行。我有一个工作登录,可以毫无问题地访问Web输出。
RabbitMQ给出的示例代码python使用Pika:
#!/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'>
服务器正在运行其他服务,但我似乎无法确定我做错了什么。
登录正确。 vhost名称是正确的。主人是对的。交换名称是正确的。
欣赏正确方向的一点。
更新
我也尝试过使用URLParameters并获得相同的结果。
parameters = pika.URLParameters('amqp://username:password@xxx.xxx.xxx.xxx:xxxxx/notmyvhostname')
connection = pika.BlockingConnection(parameters)
答案 0 :(得分:3)
但我猜这个端口并没有改变任何东西。它的端口15672和 登录与我以前浏览器输出相同。
使用端口5672 - 或您为AMQP侦听器设置的默认端口。端口15672用于Web UI访问,通过HTTP完成,因此不兼容的协议错误