部署新环境后,Magento 页面能打开,消费者却不断退出:
ACCESS_REFUSED - access to vhost '/' refused for user 'magento'
密码并没有写错。问题是运维创建了用户,也允许它登录 RabbitMQ 管理页,却没有给 Magento 实际使用的 vhost 授权。管理界面登录权限与队列读写权限不是一回事。
先把连接目标逐项对齐
查看 app/etc/env.php 中的 host、port、user、virtualhost 和 ssl,不要只验证账号。vhost 名称里的斜杠需要正确转义;集群环境还要确认每个 Web、Cron、Consumer 节点读取的是同一份配置。
rabbitmqctl list_vhosts
rabbitmqctl list_user_permissions magento
rabbitmqctl list_permissions -p /magento
如果 Magento 配置使用 /magento,授权也必须落在这个 vhost:
rabbitmqctl set_permissions -p /magento magento ".*" ".*" ".*"
生产环境应按实际交换机和队列缩小正则范围,上面的全权限更适合作为短暂验证。改完后重新启动一个消费者并观察是否能声明 exchange、写消息和 ack;只做到 TCP 连接成功还不够。
错误文本不同,排查方向也不同
PLAIN login refused:优先检查凭据或认证方式;access to vhost refused:检查 vhost 是否存在及权限;NOT_FOUND - no queue:连接已经成功,继续查拓扑声明;- TLS 握手失败:核对证书、端口与 ssl 配置。
最后我会发送一条测试消息,确认队列数量先增加再减少,并检查消费者日志没有继续重连。这样能证明权限覆盖了完整收发链路,而不是仅让报错暂时消失。

