无法连接远程Windows Server服务器部署的RabbitMQ服务问题问询
RabbitMQ远程连接被拒绝排查方案
可能原因及对应排查解决方法
- RabbitMQ默认仅监听本地回环地址
排查:在Windows Server 2019命令行执行netstat -ano | findstr "5672",如果监听地址显示为127.0.0.1,说明没有对外开放监听
解决:在RabbitMQ安装目录下新建/修改rabbitmq.conf配置文件,添加配置listeners.tcp.default = 0.0.0.0:5672,保存后在服务管理器中重启RabbitMQ服务即可。 - 防火墙/安全策略配置有误
排查:在远程客户端的PowerShell中执行Test-Netconnection <RabbitMQ服务器IP> -Port 5672,如果返回TcpTestSucceeded = False说明端口未通
解决:- 检查Windows Server入站规则,确认已开放TCP协议5672端口,规则未被更高优先级的拒绝规则覆盖
- 如果服务器部署在云服务商平台,同步检查云安全组是否开放5672端口;如果安装了第三方安全软件,也需添加对应端口放行规则
- 客户端主机名解析错误
排查:你当前代码中HostName填写的是myhostname,在远程客户端命令行执行ping myhostname,验证解析出来的IP是否为RabbitMQ服务器的实际公网/内网IP
解决:可先将代码中HostName替换为服务器实际IP测试连通性,确认是解析问题后再配置hosts映射或者DNS解析记录。 - AMQP协议插件未启用
排查:在RabbitMQ服务器命令行执行rabbitmq-plugins list,查看rabbitmq_amqp0_9_1插件是否处于启用状态(默认会启用,手动关闭后会导致连接失败)
解决:执行rabbitmq-plugins enable rabbitmq_amqp0_9_1,重启RabbitMQ服务后重试。 - 客户端版本不兼容
排查:RabbitMQ 3.9.4版本要求配套使用6.x及以上版本的.NET RabbitMQ.Client客户端,版本过低会出现兼容问题导致连接失败
解决:在Nuget包管理器中更新RabbitMQ.Client到最新兼容版本后重试。 - 服务端强制开启TLS校验
排查:检查RabbitMQ配置是否开启了SSL/TLS强制校验,开启后默认5672端口会被禁用,需要走TLS专用的5671端口
解决:要么关闭服务端的强制TLS配置,要么在客户端ConnectionFactory中添加TLS相关配置,同时将端口指定为5671。
内容的提问来源于stack exchange,提问作者Lior
相关产品推荐
相关产品推荐

