【发布时间】:2026-01-29 02:25:01
【问题描述】:
我无法在 AWS Lambda 中打开与 RabbitMQ 集群的连接。我可以使用 IIS 中托管的 .Net 标准库很好地连接到集群。在 AWS Lambda 中托管时,我得到一个带有 SocketException 的 InnerException 和 ErrorCode -1 的 BrokerUnreachableException。
异常详情
RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> System.Net.Sockets.SocketException: Unknown error -1
at RabbitMQ.Client.EndpointResolverExtensions.SelectOne[T](IEndpointResolver resolver, Func`2 selector)
at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)
--- End of inner exception stack trace ---
at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)
at PeopleGateway.Controllers.SalesforcePersonaNotificationsController.<GetAmpqBdsAsync>d__3.MoveNext()
VPC 已配置,我可以在 Lambda 函数中打开到相同主机和端口的套接字,但无法使用 RabbitMQ 客户端。
当使用 IIS Express 在本地运行相同的代码时,连接可以正常打开。
示例代码
var cf = new ConnectionFactory();
cf.Password = "password";
cf.UserName = "username";
cf.Port = 5672;
string[] allHosts = new string[] { "hostname1.domain.com", "hostname2.domain.com" };
var endpoints = allHosts.Select(h => new AmqpTcpEndpoint(h, cf.Port)).ToList();
var conn = cf.CreateConnection(endpoints);
【问题讨论】:
标签: amazon-web-services rabbitmq aws-lambda .net-standard