C#连接AWS RabbitMQ提示none of the endpoints were reachable问题咨询
AWS RabbitMQ连接报错
none of the endpoints were reachable 排查解决方法 核心报错原因
- 代码未启用TLS配置:你使用的5671端口是AMQP over TLS的专用端口,要求连接必须开启TLS加密,现有代码缺少该配置
- 实例端点填写错误:你填写的
mq.ap-southeast-1.amazonaws.com不是实例的唯一专属端点,每个Amazon MQ RabbitMQ实例都有独立的完整端点地址 - 安全组未放行端口:实例关联的AWS安全组没有放开你本地公网IP的5671端口入站权限
- 实例访问模式限制:如果实例部署在私有子网且未开启公网访问,本地公网环境无法直接连接
- 认证信息错误:填写的用户名密码是AWS控制台账号密码,而非创建RabbitMQ实例时单独设置的专属账号密码
分步排查解决
- 先修正代码配置
补充TLS相关配置,替换为你自己的实例信息,参考配置如下:
using System; using System.Text; using RabbitMQ.Client; namespace Producer { class Sender { public static void Main(string[] args) { var factory = new ConnectionFactory() { // 替换为AWS控制台RabbitMQ实例详情页的完整AMQP端点,去掉前缀amqps:// HostName = "xxx.mq.ap-southeast-1.amazonaws.com", Port = 5671, // 替换为创建实例时设置的RabbitMQ专属用户名密码,不是AWS账号密码 UserName = "你的RabbitMQ用户名", Password = "你的RabbitMQ密码", // 新增TLS配置 Ssl = new SslOption { Enabled = true, ServerName = "和上面HostName填一样的内容", Version = System.Security.Authentication.SslProtocols.Tls12 }, // 可选配置,避免超时断开 RequestedHeartbeat = TimeSpan.FromSeconds(60) }; using(var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare("BasicTest", false, false, false, null); string message = "Getting Started with .net Core RabbitMQ"; var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish("", "BasicTest", null, body); Console.WriteLine("Message Sent: {0}", message); } Console.WriteLine("Press Enter to Exit"); Console.ReadLine(); } } }
- 检查安全组规则
进入AWS控制台该RabbitMQ实例的详情页,找到关联的安全组,添加入站规则:
- 类型:
AMQP over TLS - 端口范围:
5671 - 源:你本地的公网IP(可通过搜索引擎搜索「我的IP」获取)
- 验证网络连通性
打开Mac终端执行命令telnet 你的RabbitMQ实例完整端点 5671,如果能连通说明网络配置正常,无法连通则需要检查实例是否开启了公网访问权限,是否部署在私有子网。 - 核对实例访问配置
如果实例是私有部署未开公网访问,要么在实例配置中开启公网可访问选项(仅测试环境使用,生产环境不建议),要么通过AWS VPN、跳板机接入实例所在的VPC后再连接。
内容的提问来源于stack exchange,提问作者Riquelmy Melara
相关产品推荐
相关产品推荐

