Python异步RabbitMQ库aio_pika无法连接的问题解析

本文最后更新于:2022年6月10日 晚上

前言

在RabbitMQ创建了一个名为’/test’的Virtual Host. 在使用pika库进行连接的时候可以正常连接上,但当使用aio_pika库的时候,总是连不上。

代码

1
2
3
4
5
6
7
8
9
10
credentials = pika.PlainCredentials('user', 'password')

connection = pika.BlockingConnection(
pika.ConnectionParameters(
host='ip',
port=5672,
virtual_host='/test',
credentials=credentials
)
)

以上是同步库pika的连接代码,此时可以正常连接到服务器。

1
2
3
connection = await aio_pika.connect_robust(
"amqp://user:password@ip:port/test",
)

以上是异步库aio_pika的连接代码,此时会产生错误’asyncio.exceptions.CancelledError’

经过排查,发现问题出在Virtual Host的命名上。由于pika库使用的是传参的形式传输virtual host,于是直接传入了一个’/test’。但是aio_pika使用的则是amqp URL的形式,因此这里的URL需要改为”amqp://user:password@ip:port//test”,也就是在port后多加上一个’/‘,或者也可以把virtual host的名称改为’test’。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!