0

我正在尝试使用 pika 连接到队列,在我的本地机器上运行,并且 rabbitmq 在 docker 容器中运行。我可以使用curl 命令和在 Web 浏览器中查看http://0.0.0.0:15677上的 rabbitmq ,所以我知道 rabbitmq 看起来运行良好 - 但是,我无法使用 python 连接到它.

当我没有在我的 pika.ConnectionParemers 中包含端口时,连接会立即被彻底拒绝。当我确实包含端口时,连接挂起并且永远不会显示在rabbitmq的一侧。不确定 docker 或 pika 是否发生了一些奇怪的事情,但值得一提的是,我的代码连接到了一个其他方面相同的 rabbitmq 服务器,它不是 docker 容器。

我正在运行最新版本的 OSX 并使用 python 2.7 和 pika 0.10.0。

RMQ_URL = '0.0.0.0'
HOST_QUEUE = 'snarfer'
VHOST = 'beta'
RMQ_PORT = 15677
ROUTING_KEY = 'snarfer.discovery'


self.connection = pika.BlockingConnection(pika.ConnectionParameters(
host=s.RMQ_URL, virtual_host=s.VHOST, port=s.RMQ_PORT))

***编辑:向 ConnectionParameters 添加凭据什么都不做。

4

1 回答 1

1

如果您为 AMQP 客户端使用管理 Web UI 的 TCP 端口,它就无法工作:RabbitMQ 期望该端口上的 HTTP 请求,而不是 AMQP 帧。这就是客户端似乎挂起的原因。

如果不指定 TCP 端口,它将使用默认 AMQP 端口 5672。根据管理 UI 端口 (15677),我想您的 RabbitMQ 正在侦听端口 5677 上的 AMQP 连接,因为默认情况下,管理插件侦听 $amqp_port + 10000。

因此尝试使用RMQ_PORT = 5677.

如果它不起作用,请仔细检查您的 RabbitMQ 配置和/或查看管理 UI 以找出 AMQP 端口。

于 2016-07-21T16:39:36.520 回答