繁体   English   中英

无法连接到RabbitMQ服务器

[英]Cannot connect to RabbitMQ server

我正在尝试运行官方页面提供的示例代码: https : //www.rabbitmq.com/tutorials/tutorial-one-dotnet.html

我正在使用此代码:

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;

class Send
{
    public static void Main()
    {
        var factory = new ConnectionFactory() { HostName = "rabbit@my.host.name.net" };
        var connection = factory.CreateConnection() //this throwing exception
        var channel = connection.CreateModel()
    }
}

问题是,我总是收到这些异常:

RabbitMQ.Client.dll 中的“RabbitMQ.Client.Exceptions.ConnectFailureException” RabbitMQ.Client.dll 中的“RabbitMQ.Client.Exceptions.BrokerUnreachableException”

服务器不在本地主机上运行,​​因此我已将主机名更改为我的服务器主机名。 我可以通过 ping 从我的计算机访问服务器,并且服务器正在侦听 5672 端口。

可能有什么问题?

好的,评论中的一些内容:

However the rabbit@.... is just the clustername, not refering to username尽管我不熟悉 C# API,但我很确定这不是编写主机名的方式。 你应该先写IP,看看它是否有效,然后是主机名。 如果您愿意,可以使用 API 提供AMQP URI

集群是代理本身的东西; 客户端不应该关心他们是连接到集群中的节点还是单个(“非集群”)实例......

其次,默认使用的“guest”用户(如果没有指定用户)只能从本地主机访问代理(同样,默认情况下)。 因此,如果您尝试从另一台计算机连接到服务器,则使用“guest”将不起作用。 您需要创建一个新的 RMQ 用户并分配适当的权限。

请注意,您当然可以以访客用户有权访问的方式配置 RMQ(即使对于开发环境,即使您更改默认密码,这也是非常错误的),官方 RMQ docker 镜像就是以这种方式配置的(上次是我无论如何检查了)。

可能您需要使用正确的 .NET 运行时。 例如对于 RabbitMQ,它说明了这一点。 此库的 4.x 和 5.x 版本系列需要 .NET 4.5.1+ 或 .NET Standard 1.5+ 实现(例如 .NET Core 2.x)。 这只是发生在一位同事身上,他发现更新运行时解决了问题,并且日志消息几乎没有给出原因的线索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM