Python Pika 和 RabbitMQ 正在连接发布
Python Pika and RabbitMQ Connecting to Publish
正在尝试使用 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'>
服务器 运行 其他服务正常,但我似乎无法查明我做错了什么。
登录正确。虚拟主机名是正确的。楼主说的对交易所名称正确。
希望能指出正确的方向。
更新:
我也尝试过使用 URLParameters,结果相同。
parameters = pika.URLParameters('amqp://username:password@xxx.xxx.xxx.xxx:xxxxx/notmyvhostname')
connection = pika.BlockingConnection(parameters)
But I guess the port doesn't change anything. It's port 15672 and the
login is the same as I used to get on the browser output.
使用端口 5672 - 或您为 AMQP 侦听器设置的任何默认端口。端口 15672 用于 Web UI 访问,这是通过 HTTP 完成的,因此出现不兼容的协议错误
正在尝试使用 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'>
服务器 运行 其他服务正常,但我似乎无法查明我做错了什么。
登录正确。虚拟主机名是正确的。楼主说的对交易所名称正确。
希望能指出正确的方向。
更新:
我也尝试过使用 URLParameters,结果相同。
parameters = pika.URLParameters('amqp://username:password@xxx.xxx.xxx.xxx:xxxxx/notmyvhostname')
connection = pika.BlockingConnection(parameters)
But I guess the port doesn't change anything. It's port 15672 and the login is the same as I used to get on the browser output.
使用端口 5672 - 或您为 AMQP 侦听器设置的任何默认端口。端口 15672 用于 Web UI 访问,这是通过 HTTP 完成的,因此出现不兼容的协议错误