我正在尝试使用pika连接到队列,在我的本地盒子上运行,而rabbitmq在docker容器中运行。我可以使用curl命令在http://0.0.0.0:15677上访问rabbitmq并在Web浏览器中查看它,所以我知道rabbitmq看起来运行正常 - 但是,我无法使用python连接到它。
当我没有在我的pika.ConnectionParemeters中包含该端口时,该连接将立即被彻底拒绝。当我包括端口时,连接挂起并且永远不会显示在rabbitmq的一侧。不确定是否有使用docker或pika的时髦的东西,但值得一提的是我的代码连接到一个不是docker容器的其他相同的rabbitmq服务器。
我正在运行最新版本的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添加凭据不会做任何事情。
答案 0 :(得分: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端口。