RabbitMQ跨服务器连接问题:如何连接其他主机上的RabbitMQ服务
解决RabbitMQ内网连接失败的问题
1. 修正客户端连接端口
你代码里用的15672是RabbitMQ的管理控制台端口,C# AMQP客户端的默认连接端口是5672,先修改代码中的Port值:
var factory = new ConnectionFactory { HostName = "192.168.0.115", UserName = "guest", Password = "guest", Port = 5672, };
2. 配置RabbitMQ监听内网地址
当前RabbitMQ只监听localhost,导致内网其他机器无法访问,需要修改监听配置:
- 找到RabbitMQ的配置文件(
rabbitmq.conf):- Linux系统通常在
/etc/rabbitmq/目录下 - Windows系统在
C:\Program Files\RabbitMQ Server\rabbitmq_server-[版本号]\etc\目录下
- Linux系统通常在
- 在配置文件中添加或修改监听规则,让服务监听所有网卡:
或者指定内网IP:listeners.tcp.default = 0.0.0.0:5672listeners.tcp.default = 192.168.0.115:5672 - 重启RabbitMQ服务:
- Linux:
sudo systemctl restart rabbitmq-server - Windows:打开「服务」面板,找到RabbitMQ服务并重启
- Linux:
3. 开放主机防火墙端口
确保192.168.0.115的防火墙允许5672端口的TCP连接:
- Linux(以ufw为例):
或者用firewalld:sudo ufw allow 5672/tcp sudo ufw reloadsudo firewall-cmd --add-port=5672/tcp --permanent sudo firewall-cmd --reload - Windows:
打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」,选择「端口」,指定TCP 5672端口,允许连接。
4. 调整guest用户访问权限
默认情况下,RabbitMQ的guest用户仅允许从localhost登录,需要修改其权限:
- 方式1:通过管理控制台
访问http://192.168.0.115:15672(未启用管理插件的话执行rabbitmq-plugins enable rabbitmq_management),用guest/guest登录后,进入「Admin」→「Users」→ 点击guest用户的「Set permission」,给/虚拟主机分配所有权限。 - 方式2:命令行
执行以下命令:rabbitmqctl set_permissions -p / guest ".*" ".*" ".*"
内容的提问来源于stack exchange,提问作者nits_tech
相关产品推荐
相关产品推荐

