111 communication network_error ai_generated true

AMQPConnectionError: connection refused (111) to rabbitmq-host:5672

ID: communication/rabbitmq-connection-refused-ec2

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
1Evidence
2023-04-05First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
RabbitMQ 3.12 active
Erlang 26 active
Pika 1.3 active
amqp-node 0.10 active

Root Cause

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.

generic

中文

AMQP 客户端无法与 RabbitMQ 服务器建立 TCP 连接,因为服务器未在指定端口上监听、服务已关闭,或防火墙/安全组阻止了入站流量。

Official Documentation

https://www.rabbitmq.com/docs/connection#connection-refused

Workarounds

  1. 80% success Check if RabbitMQ is running: `systemctl status rabbitmq-server` or `rabbitmqctl status`. If not running, start it: `systemctl start rabbitmq-server`.
    Check if RabbitMQ is running: `systemctl status rabbitmq-server` or `rabbitmqctl status`. If not running, start it: `systemctl start rabbitmq-server`.
  2. 75% success 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.
    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.
  3. 70% success 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.
    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.

中文步骤

  1. Check if RabbitMQ is running: `systemctl status rabbitmq-server` or `rabbitmqctl status`. If not running, start it: `systemctl start rabbitmq-server`.
  2. 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.
  3. 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.

Dead Ends

Common approaches that don't work:

  1. Change the RabbitMQ username and password in the client 90% fail

    Changing the RabbitMQ user credentials does not fix the connection refusal because the TCP handshake fails before any authentication occurs.

  2. Increase the AMQP connection timeout to 60 seconds 95% fail

    Increasing the connection timeout does not help because the error is immediate (connection refused), not a timeout.

  3. Enable TLS/SSL on the AMQP client connection 85% fail

    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.