我正在尝试运行官方页面提供的示例代码: 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 = "[email protected]" };
var connection = factory.CreateConnection() //this throwing exception
var channel = connection.CreateModel()
}
}
问题是,我总是遇到这些异常:
'RabbitMQ.Client.Exceptions.ConnectFailureException' 在 RabbitMQ.Client.dll 中 'RabbitMQ.Client.Exceptions.BrokerUnreachableException' 中 RabbitMQ.Client.dll
服务器未在本地主机上运行,因此我已将主机名更改为我的服务器主机名。我可以通过 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 镜像就是以这种方式配置的(最后一次)无论如何,我检查了一下)。