无法连接到RabbitMQ服务器

时间:2016-06-06 08:48:02

标签: c# rabbitmq

我正在尝试运行官方页面提供的示例代码: 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.Exceptions.ConnectFailureException'   在RabbitMQ.Client.dll中   'RabbitMQ.Client.Exceptions.BrokerUnreachableException'中   RabbitMQ.Client.dll

服务器未在localhost上运行,因此我已将主机名更改为服务器主机名。我可以通过ping从计算机访问服务器,服务器正在监听5672端口。

可能出现什么问题?

2 个答案:

答案 0 :(得分:0)

好的,评论中的内容很少:

However the rabbit@.... is just the clustername, not refering to username 即使我不熟悉C#API,我也非常确定这是不是来编写主机名。您应该首先编写IP,看它是否有效,然后使用主机名。如果您愿意,可以使用API​​提供the AMQP URI

集群是代理商本身的东西;如果客户端连接到群集中的节点或单个("非群集")实例,则客户端不应该关心...

其次,"客人" 默认使用的用户(如果未指定用户)只能从localhost访问代理(默认情况下再次)。因此,如果您尝试从另一台计算机连接到服务器,请使用" guest"不管用。您需要创建一个新的RMQ用户并分配适当的权限。

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

答案 1 :(得分:0)

可能您需要使用正确的.NET运行时。例如,它声明为RabbitMQ的here。此库的4.x和5.x版本系列需要.NET 4.5.1+或.NET Standard 1.5+实施(例如.NET Core 2.x)。这只是一个同事的事,他发现更新运行时解决了该问题,并且日志消息几乎没有提供有关原因的线索。