You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MassTransit通过公网IP连接远程RabbitMQ失败求助

解决MassTransit连接远程RabbitMQ的BrokerUnreachableException问题

问题描述

使用MassTransit通过公网IP(示例:000.000.0.00)连接远程RabbitMQ时,启动应用报错:

RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable

配置代码如下:

x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(config =>
{
    var rabbitMqUri = new Uri("rabbitmq://000.000.0.00");
    config.Host(rabbitMqUri, h =>
    {
        h.Username(configuration["RabbitMQ:UserName"]);
        h.Password(configuration["RabbitMq:Password"]);
    });
})

排查与解决步骤

  • 网络连通性检查

    • 执行ping 000.000.0.00测试服务器是否可达,若不通先确认公网IP正确性,再检查服务器防火墙是否开放RabbitMQ默认端口(5672)。
    • 用telnet 000.000.0.00 5672或nc -zv 000.000.0.00 5672验证端口是否开放,若连接失败需在服务器端配置防火墙规则放行5672端口,同时确认云服务器安全组(如阿里云、腾讯云)是否开放该端口。
  • RabbitMQ远程访问配置

    • RabbitMQ默认仅允许localhost访问,需修改配置文件(rabbitmq.config或advanced.config),设置loopback_users为空数组以允许外部IP访问:
      loopback_users = none
      
    • 重启RabbitMQ服务使配置生效:rabbitmq-server restart
  • 代码配置验证

    • 检查配置文件中RabbitMQ:UserName和RabbitMq:Password的键名大小写,代码中两处键名大小写不一致(RabbitMQ和RabbitMq),可能导致读取不到正确凭证,建议统一键名大小写。
    • 可临时硬编码用户名密码测试,排除配置读取问题:
      h.Username("你的用户名");
      h.Password("你的密码");
      
    • 若RabbitMQ修改了默认端口,需在URI中指定端口,例如rabbitmq://000.000.0.00:5673
  • 版本兼容性验证

    • 确认MassTransit与RabbitMQ.Client版本匹配,部分版本组合可能存在兼容性问题,建议使用MassTransit官方推荐的对应版本。

内容的提问来源于stack exchange,提问作者npirate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:05:21