rabbitmq-diagnostics -q listeners rabbitmqctl add_vhost /order rabbitmqctl set_permissions -p /order app '.*' '.*' '.*'
应用端报 Connection refused 或者 socket closed,在 broker 上 telnet 5672 是通的,从应用服务器连就一直失败。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,listeners.tcp.default 只监听了 127.0.0.1,或者安全组没放行 5672 和 15672,外部地址连进来直接被拒,容器没做端口映射时表现一样。
「RabbitMQ 连接被拒」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
处理上按这个顺序:确认监听地址是 0.0.0.0 而不是回环地址;把 5672 和 15672 放行到应用所在网段 别对全网开放;用专用账号加 vhost 权限 不要拿 guest 上生产。
改完只确认一件事:应用服务器 telnet 5672 通,客户端连上后能正常声明队列。
