文章内容

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 常见端口

端口用途
5672AMQP(你现在用的)
15672管理后台 HTTP
5671AMQP TLS
25672集群通信

六、总结

你现在的问题不是代码问题,而是网络访问链路断了

👉 必须做:

  • ✔ 放行 TCP 5672

  • ✔ 检查安全组

  • ✔ 检查服务器防火墙

  • ✔ 确认 RabbitMQ 监听 0.0.0.0

Docker Compose 重启
没有了
分享到:

发表评论

评论列表