使用用户名和密码时RabbitMQ C#连接出现问题

我在这里不知所措,所以我正在接受集体知识,希望有一个奇迹。

我使用默认值在Linux机器上安装了RabbitMQ。

当我使用这个代码(和默认的RabbitMQ安assembly置)时,一切都很好。

var connectionFactory = new ConnectionFactory(); connectionFactory.HostName = "192.168.0.12"; IConnection connection = connectionFactory.CreateConnection(); 

但是当我向RabbitMQ添加用户并尝试使用以下代码时(用户名和密码已被更改以保护无辜。:))

 var connectionFactory = new ConnectionFactory(); connectionFactory.HostName = "192.168.0.12"; connectionFactory.UserName = "user"; connectionFactory.Password = "password"; IConnection connection = connectionFactory.CreateConnection(); 

connectionFactory.CreateConnection()方法抛出以下exception:

 BrokerUnreachableException None of the specified endpoints were reachable 

检查RabbitMQ日志文件我可以看到它抱怨凭据:

 {amqp_error,access_refused, "PLAIN login refused: user 'user' - invalid credentials", 'connection.start_ok'}} 

问题是我对用户名和密码充满信心,我不能因为热爱编码而在任何地方找到解决方案。

我必须遗漏一些明显的东西,但我无法弄清楚它是什么。 对于任何有用的指示,我将不胜感激。

似乎我找到了解决自己问题的方法。 以下代码有效:

 ConnectionFactory factory = new ConnectionFactory(); factory.UserName = "user"; factory.Password = "password"; factory.VirtualHost = "/"; factory.Protocol = Protocols.FromEnvironment(); factory.HostName = "192.168.0.12"; factory.Port = AmqpTcpEndpoint.UseDefaultPort; IConnection conn = factory.CreateConnection(); 

感谢您的倾听,或许至少对其他人有用。 🙂

接受的答案对我不起作用(在Windows上)。

我不得不安装管理工具:

 rabbitmq-plugins enable rabbitmq_management 

NB rabbitmq-plugins位于C:\ Program Files(x86)\ RabbitMQ Server \ rabbitmq_server-3.3.1 \ sbin

然后,重新启动RabbitMQ服务。

然后我在包管理器中在Visual Studio中安装了EasyNetQ:

 install-package easynetq 

安装完成后,我可以使用位于以下位置的管理网站:

 http://localhost:15672 

NB默认用户名和密码是:guest

从这里,我选择了Admin选项卡,原因在屏幕顶部清晰显示为黄色:

 This user does not have permission to access any virtual hosts. Use "Set Permission" below to grant permission to access virtual hosts. 

为了解决这个问题我只是在同一个屏幕上按下了设置权限按钮

请注意,要使用rabbitmqctl add_user用户名密码或类似名称(rabbitmqctl也在上面的目录中)。

以下是如何使用密码agent创建一个名为agent的用户,将其设置为administrator并为其提供对vhost /中所有队列的write访问权限

 rabbitmqctl add_user agent agent rabbitmqctl set_user_tags agent administrator rabbitmqctl set_permissions -p / agent ".*" ".*" ".*"