[英]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.