【问题标题】:RabbitMQ C# connection trouble when using a username and password使用用户名和密码时 RabbitMQ C# 连接问题
【发布时间】:2011-02-13 22:44:16
【问题描述】:

我在这里不知所措,所以我正在寻求集体知识,希望能出现奇迹。

我已经使用默认设置在 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'}}

问题是我对用户名和密码很有信心,但由于热爱编码,我无法在任何地方找到解决方案。

我一定遗漏了一些明显的东西,但我不知道它是什么。 如果有任何有用的指点,我将不胜感激。

【问题讨论】:

    标签: c# .net rabbitmq


    【解决方案1】:

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

    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 文件中添加一些东西。请帮忙。你的观点对我很有帮助
    • 嗨!很抱歉没有早点回答。我只玩了一段时间的 RabbitMQ,所以我没有太多经验。我记得有一个 RabbitMQ 实例正在运行,所以你可能也需要它。关于 web.config 文件,恐怕我不知道我是否曾经使用过它。
    • FWIW,对我来说最重要的是设置 VirtualHostProtocol
    • 另外:确保用户确实拥有虚拟主机的访问权限
    • 作为访客的用户名/密码是否有效?我的不工作:(而且它不识别 FromEnvironment()
    【解决方案2】:

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

    我必须安装管理工具:

    rabbitmq-plugins enable rabbitmq_management
    

    注意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 也在上面的目录中)。

    【讨论】:

      【解决方案3】:

      这里是如何使用密码agent创建一个名为agent的用户,将其设置为administrator,并赋予它readwrite访问vhost中所有队列的权限/

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-03
        • 2023-03-24
        • 2019-08-14
        • 2015-04-11
        • 2019-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多