You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用aio_pika连接RabbitMQ遇ACCESS_REFUSED错误求助

RabbitMQ aio_pika 连接认证失败排查

问题描述

尝试使用管理员账号密码通过aio_pika连接RabbitMQ,代码如下:

async def send_rmq(message) -> None:
    connection = await connect("amqp://login:password@url") 

连接时抛出认证错误:

aiormq.exceptions.ProbableAuthenticationError: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

已完成的排查:

  • 通过Web界面可正常登录RabbitMQ管理后台
  • 执行curl命令能正常获取队列消息数:
curl -s -u login:password http://url:15672/api/queues/%2F/name_queue | grep -o "messages":[0-9]*

确认网络连通性无问题,环境为:项目部署在远程服务器的Docker容器中,RabbitMQ运行在另一台服务器的Docker容器内,curl命令从项目所在远程服务器终端执行。

可能的原因及解决方向

  • AMQP端口未正确开放:RabbitMQ管理后台用的是15672端口,而AMQP协议默认使用5672端口。需确认RabbitMQ容器是否映射了5672端口到宿主机,且宿主机防火墙/安全组放行该端口;若修改过AMQP端口,需在连接字符串中明确指定(如amqp://login:password@url:自定义端口)。
  • 账号缺少AMQP权限:管理后台登录权限(management标签)和AMQP操作权限(configure/write/read)是分离的。即使账号是管理员,也需确认是否为默认vhost(/)分配了AMQP相关权限。可在RabbitMQ管理后台的「Users」页面,查看对应账号的权限列表,确保vhost / 拥有至少write权限。
  • 连接字符串中密码含特殊字符未编码:若密码包含@、#、/等URL特殊字符,直接写入连接字符串会导致解析错误,实际传递的密码不完整。需将特殊字符进行URL编码,例如@替换为%40,#替换为%23。
  • Docker容器网络访问限制:项目所在的Docker容器可能无法访问RabbitMQ服务器的AMQP端口。可在容器内部执行telnet url 5672或nc -zv url 5672测试端口连通性,若不通需检查容器网络配置(如是否使用了桥接网络、是否能解析RabbitMQ服务器地址)。
  • RabbitMQ认证机制配置异常:检查RabbitMQ的配置文件,确认是否禁用了PLAIN认证机制。默认情况下PLAIN是开启的,若被禁用,需重新启用或调整连接时指定的认证机制。

内容的提问来源于stack exchange,提问作者sportul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:57:27