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



我正试图使用pika连接到一个队列,在我的本地盒子上运行,并在docker容器中运行rabbitmq。我可以在上访问rabbitmqhttp://0.0.0.0:15677使用curl命令并在web浏览器中查看它,所以我知道rabbitmq看起来运行得很好——然而,我无法使用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))

***EDIT:向ConnectionParameters添加凭据没有任何作用。

如果您将管理web UI的TCP端口用于AMQP客户端,它将无法工作:RabbitMQ希望在该端口上有HTTP请求,而不是AMQP帧。这就是为什么客户似乎挂断了。

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

因此,尝试使用RMQ_PORT = 5677

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

最新更新