AMQPConnectionError:连接到 rabbitmq-host:5672 被拒绝(111)
AMQPConnectionError: connection refused (111) to rabbitmq-host:5672
ID: communication/rabbitmq-connection-refused-ec2
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| RabbitMQ 3.12 | active | — | — | — |
| Erlang 26 | active | — | — | — |
| Pika 1.3 | active | — | — | — |
| amqp-node 0.10 | active | — | — | — |
根因分析
AMQP 客户端无法与 RabbitMQ 服务器建立 TCP 连接,因为服务器未在指定端口上监听、服务已关闭,或防火墙/安全组阻止了入站流量。
English
The AMQP client cannot establish a TCP connection to the RabbitMQ server because the server is not listening on the specified port, the service is down, or a firewall/security group is blocking inbound traffic.
官方文档
https://www.rabbitmq.com/docs/connection#connection-refused解决方案
-
Check if RabbitMQ is running: `systemctl status rabbitmq-server` or `rabbitmqctl status`. If not running, start it: `systemctl start rabbitmq-server`.
-
Verify firewall rules: on Linux, run `sudo ufw status` or `iptables -L -n | grep 5672`. Ensure inbound TCP on port 5672 is allowed. For cloud providers, check security group inbound rules for the instance.
-
If RabbitMQ is listening on a different interface (e.g., localhost only), update the config file `/etc/rabbitmq/rabbitmq.conf` to bind to `0.0.0.0` or the correct IP: `listeners.tcp.default = 0.0.0.0:5672`. Restart RabbitMQ after changes.
无效尝试
常见但无效的做法:
-
Change the RabbitMQ username and password in the client
90% 失败
Changing the RabbitMQ user credentials does not fix the connection refusal because the TCP handshake fails before any authentication occurs.
-
Increase the AMQP connection timeout to 60 seconds
95% 失败
Increasing the connection timeout does not help because the error is immediate (connection refused), not a timeout.
-
Enable TLS/SSL on the AMQP client connection
85% 失败
Enabling TLS on the client without configuring the server to accept TLS on the same port will still result in connection refusal or a different error.