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

C#连接AWS上的RabbitMQ报错None of the specified endpoints were reachable

问题根因

你使用的5671是AWS RabbitMQ的AMQPS加密端口,当前代码仅配置了基础连接参数,没有启用TLS验证,导致TCP连接建立后TLS握手失败,最终抛出None of the specified endpoints were reachable异常。Telnet、nc能连通仅代表TCP层网络可达,不代表应用层TLS握手、AMQP协议交互正常。

修复方案

调整ConnectionFactory的SSL配置项,开启TLS并匹配AWS证书的校验规则,正确连接代码如下:

[Fact]
public void RabbitConnection() {
  var cf = new ConnectionFactory() {
    HostName = "longguid.amazonaws.com",
    Password = "pass",
    UserName = "user",
    Port = 5671,
    // 新增以下SSL配置
    Ssl = new SslOption()
    {
      Enabled = true,
      // 服务器名称必须和HostName一致,匹配AWS颁发的证书域名
      ServerName = "longguid.amazonaws.com",
      // 测试环境如果有证书校验问题可临时打开,生产环境必须移除
      // AcceptablePolicyErrors = System.Net.Security.SslPolicyErrors.RemoteCertificateNameMismatch | System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors
    }
  };
  // Act
  var con = cf.CreateConnection();

  // Assert
  Assert.True(true);
}
额外注意事项
  • 不要使用tls.none配置,该配置对应未加密的AMQP协议,仅适用于5672端口,AWS托管RabbitMQ默认不会对外暴露5672端口
  • 如果使用Uri方式配置,需要使用amqps://前缀的完整地址,同时仍需配置上述Ssl选项
  • 确认你的AWS安全组已经放开了本地出口IP到RabbitMQ实例5671端口的入站规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:07