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

34

我感到有些无助,所以我在这里向集体智慧求助,希望能得到一种奇迹。

我已经使用默认设置在 Linux 机器上安装了 RabbitMQ。

当我使用这段代码(以及默认的 RabbitMQ 安装配置)时,一切都很好。

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() 方法会抛出以下异常:

BrokerUnreachableException    
None of the specified endpoints were reachable

查看RabbitMQ日志文件,我发现它抱怨凭据:

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

问题是我对用户名和密码非常有信心,但是我无论如何都找不到解决方案。

我一定是错过了什么显而易见的东西,但我想不出来是什么。 如果有任何有用的提示,我将不胜感激。

3个回答

38

看起来我已经找到了解决自己问题的方法。 以下代码有效:

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();

谢谢聆听,也许这对其他人有用。:)


嗨!我也在尝试建立连接以发送消息。我已经搜索过了,但不满意。你能否给我一些建议。我们是否需要在使用上述代码之前安装rabbitMQ服务器。我在添加DLL引用后使用以上代码,所以项目中没有错误,但仍然会出现上述异常。我们还需要在WEB.Config文件中添加一些东西吗?请帮帮忙。你的观点将真正帮助我。 - Prince
你好!抱歉之前没有及时回复。我只使用过短暂时间的RabbitMQ,所以对它并不是很有经验。我记得我曾经运行过一个RabbitMQ实例,你可能也需要这个。关于web.config文件,恐怕我不知道我是否曾经使用过它。 - user181261
对我而言,最重要的是设置VirtualHostProtocol。顺带一提。 - Kirk Woll
另外,确保用户实际上具有对虚拟主机的访问权限。 - Jeroen Vannevel
抱歉,Imad。由于我没有测试设置,无法回答你的问题。希望其他一些善良的Stackoverflow用户能够帮助你。 - user181261
显示剩余2条评论

9

以下是创建一个名为agent的用户,密码为agent,将其设置为管理员并允许其对vhost /中的所有队列进行读取写入权限的方法:

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

7

接受的答案在我的电脑上(Windows系统)没有奏效。

我需要安装管理工具:

rabbitmq-plugins enable rabbitmq_management

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

然后,重新启动RabbitMQ服务。

接着,在Visual Studio中的程序包管理器中安装了EasyNetQ:

install-package easynetq

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

http://localhost:15672

注意:默认用户名和密码为:guest
从这里开始,我选择了管理员选项卡,原因清楚地以黄色显示在屏幕顶部。
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 username password”或类似命令添加用户(rabbitmqctl也在上面的目录中)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接