文章内容
2026/4/1 3:29:06,作 者: 黄兵
RabbitMQ 端口问题
最近需要外部程序与 RabbitMQ 通讯,但是不再一个服务器上,同时 RabbitMQ 服务器没有开发相应端口。
结果程序出现了如下错误:
pika.adapters.utils.connection_workflow: ERROR AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: TimeoutError("TCP connection attempt timed out: 'rabbit.example.com'/(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('1.1.1.1', 5672))")
pika.adapters.utils.connection_workflow: ERROR AMQP connection workflow failed: AMQPConnectionWorkflowFailed: 1 exceptions in all; last exception - AMQPConnectorSocketConnectError: TimeoutError("TCP connection attempt timed out: 'rabbit.example.com'/(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('1.1.1.1', 5672))"); first exception - None.
出现问题的原因:
说明客户端尝试建立 TCP 连接失败(超时),而不是被拒绝(Connection refused)。这通常是**网络层被拦截(防火墙 / 安全组)**导致的。
一、结论
👉 必须放行 TCP 5672 端口,不是 UDP
AMQP(如 RabbitMQ)协议是:
基于 TCP
默认端口 5672
完全不使用 UDP
二、你这个错误的典型原因
这个错误链路是:
pika (Python AMQP client) → TCP connect → 超时 → AMQPConnectorSocketConnectError
说明:
| 情况 | 说明 |
|---|---|
| ❌ 不是账号密码错误 | 因为还没连上 |
| ❌ 不是 RabbitMQ 配置错误 | 因为 TCP 都没建立 |
| ✅ 是网络层问题 | 连接被阻断 |
三、需要检查的 4 个关键点
1️⃣ 腾讯云 Lighthouse 安全组(最常见)
你这个域名明显是腾讯云:
rabbit.example.com → 1.1.1.1
👉 去腾讯云控制台检查:
安全组入站规则
是否允许:
协议:TCP 端口:5672 来源:你的客户端 IP(或 0.0.0.0/0 测试用)
2️⃣ 服务器本机防火墙(容易忽略)
如果是 Linux:
# firewalld firewall-cmd --list-ports # 如果没有 5672 firewall-cmd --add-port=5672/tcp --permanent firewall-cmd --reload
或:
# iptables iptables -L -n
3️⃣ RabbitMQ 是否监听公网
检查:
ss -lntp | grep 5672
你应该看到类似:
0.0.0.0:5672
如果是:
127.0.0.1:5672
👉 那只能本机访问,外网必然超时
4️⃣ 云厂商额外限制
腾讯云 Lighthouse 有时还会:
限制某些端口(默认策略)
或需要额外开放
四、快速自测方法(强烈建议)
在你的客户端机器执行:
telnet 1.1.1.1 5672
或:
nc -zv 1.1.1.1 5672
结果判断:
| 结果 | 含义 |
|---|---|
Connected | 网络 OK |
timeout | 防火墙拦截 |
refused | 端口没开 / 服务没启动 |
五、补充:RabbitMQ 常见端口
| 端口 | 用途 |
|---|---|
| 5672 | AMQP(你现在用的) |
| 15672 | 管理后台 HTTP |
| 5671 | AMQP TLS |
| 25672 | 集群通信 |
六、总结
你现在的问题不是代码问题,而是网络访问链路断了:
👉 必须做:
✔ 放行 TCP 5672
✔ 检查安全组
✔ 检查服务器防火墙
✔ 确认 RabbitMQ 监听 0.0.0.0
评论列表