如何从 C# 连接到 AWS RabbitMQ?

问题描述 投票:0回答:2

在我的 C# 应用程序中,我有以下代码:

var factory = new ConnectionFactory
        {
            Port = 5671,
            UserName = "userxxxx",
            Password = "passwordxxx",
            HostName = "amqps://xxxx.mq.us-east-1.amazonaws.com"
        };
        using var connection = factory.CreateConnection();

但是在 CreateConnection 期间我收到:

RabbitMQ.Client.Exceptions.BrokerUnreachableException
   HResult=0x80131620
   Message=None of the specified endpoints were reachable
   Source=RabbitMQ.Client 

AWS 控制台向我展示:

端点:amqps://xxxx.mq.us-east-1.amazonaws.com:5671

我做错了什么?

c# amazon-web-services rabbitmq
2个回答
2
投票

使用“netcat”等工具验证您可以连接到 AWS MQ 上的端口 5671。 Netcat 应该在您尝试连接的同一主机 上使用。或者,考虑使用基于云的端口扫描仪,例如 https://www.whatismyip.com/port-scanner/ 将您的本地网络排除在外。

netcat 的成功示例:

$ nc -vz myownawsmq.mq.us-east-1.amazonaws.com 5671 连接到 myownawsmq.mq.us-east-1.amazonaws.com 5671 端口 [tcp/amqps] 成功!

如果出现错误或超时,则说明您的 URL 不正确或端口 5671 被阻止。

当我创建 AWS RabbitMQ 实例时,端口 5671 对互联网开放,因为默认情况下可公开访问。您不能将安全组与可公开访问的 RabbitMQ 实例一起使用。如果您为 RabbitMQ 实例设置私有访问,您将无法从外部访问它。

也有可能 5671 被本地防火墙规则阻止。检查本地网络中的防火墙配置以确保允许 5671。如果基于云的端口扫描仪可以连接到该端口,但本地扫描不能连接到该端口,则可能是您的本地网络配置问题。


0
投票

你必须像这样纠正你的代码

var factory = new ConnectionFactory
    {
        Uri = new Uri("amqps://xxxx.mq.us-east-1.amazonaws.com"),
        Port = 5671,
        VirtualHost = "/",
        UserName = "userxxxx",
        Password = "passwordxxx"
    };
    using var connection = factory.CreateConnection();
© www.soinside.com 2019 - 2024. All rights reserved.