【问题标题】:Python Pika and RabbitMQ Connecting to PublishPython Pika 和 RabbitMQ 连接发布
【发布时间】:2016-05-06 18:26:11
【问题描述】:

尝试使用 Python 将数据发送到 RabbitMQ 队列。

我尚未配置服务器,但它正在为其他进程运行。我有一个有效的登录名,可以毫无问题地访问网络输出。

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)

【问题讨论】:

  • 您使用的是哪个端口和用户名?
  • 我已将登录名替换为“用户名”和“密码”,并将端口替换为 xxxxx。
  • 但我猜这个端口并没有改变任何东西。它是端口 15672,登录方式与我在浏览器输出时使用的登录方式相同。

标签: python rabbitmq amqp pika


【解决方案1】:

但我猜端口不会改变任何东西。它是端口 15672 和 login 和我以前在浏览器输出上的登录是一样的。

使用端口 5672 - 或您为 AMQP 侦听器设置的任何默认端口。端口 15672 用于 Web UI 访问,这是通过 HTTP 完成的,因此会出现不兼容的协议错误

【讨论】:

  • 我已经尝试了三个不同的库和一些有趣的 HTTP API 方法,并且更改了端口。好吧,它仍然不会写通道正在关闭,但它至少正在连接。感谢那种愚蠢的感觉,我没有早点想到它。
  • Np - 发生在我们所有人身上;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2020-04-20
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多