Docker 上的 RabbitMQ:Pika 在给定端口时挂起连接,没有端口连接被拒绝

RabbitMQ on Docker: Pika hangs on connection when given port, connection refused without port

我正在尝试使用 pika 连接到队列,运行 在我的本地盒子上,以及 rabbitmq 运行 在 docker 容器中。我可以使用两个 curl 命令在 http://0.0.0.0:15677 上访问 rabbitmq,并在 Web 浏览器中查看它,所以我知道 rabbitmq 看起来像 运行ning 很好 - 但是,我无法使用python。

当我不在 pika.ConnectionParemeters 中包含端口时,连接立即被完全拒绝。当我包含端口时,连接挂起并且从不显示在 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 添加凭据不执行任何操作。

如果您将管理网站 UI 的 TCP 端口用于您的 AMQP 客户端,则它无法工作:RabbitMQ 需要该端口上的 HTTP 请求,而不是 AMQP 帧。这就是客户端似乎挂起的原因。

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

因此尝试 RMQ_PORT = 5677

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