zoukankan      html  css  js  c++  java
  • rabbitmq无用使用guest用户远程连接

    最近开始使用rabbitmq,因为不了解,浪费了不少时间,记录如下:

    使用场景:服务器(linux)上部署了一个app1模块,该模块向rabbitmq发送消息,我想让这个模块的消息发送到我本地(windows)

    遇到问题:为实现使用场景中的目的,因此将app1中配置的rabbitmq的ip地址改成了我本地的ip,用户名和密码都是guest,最后发现连接失败,直接报如下错误:

    nested exception is com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

    解决问题:

    尝试1:创建新用户

      从网上查了一下,原因如下:账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq(该功能是在3.3.0版本引入的)。

      因此,新建了一个用户admin,密码也是admin,并开启了所有权限(可参考:https://www.linuxidc.com/Linux/2014-10/107917.htm),将app1配置文件中的用户名和密码也进行了相应的修改,如下所示:

    #=====================rabbitmq================================
    rabbit.mq.host=192.168.40.140
    rabbit.mq.username=admin
    rabbit.mq.password=admin
    rabbit.mq.event.add.name=event
    rabbit.mq.event.update.name=eventupdate
    rabbit.mq.event.mail.name=eventmail

    结果仍然报错,再查,说是rabbitmq的配置文件需要改一下(仍参考上个网址),改完还是报同样的错,最后在app1中查询了一下代码,发现配置文件中配置的

    rabbit.mq.username和rabbit.mq.password,即rabbitmq的用户名和密码并没有使用,rabbit初始化连接的代码如下
    public void init() throws Exception{
            factory = new ConnectionFactory();
            factory.setAutomaticRecoveryEnabled(true);
            factory.setExceptionHandler(new RabbitMqExcetionHandler());
            factory.setHost(rabbitmqHost);
            connection =  factory.newConnection();
            channel = connection.createChannel();
        }

      既然没有用到用户名和密码,那默认应该使用的是guest用户,因此,尝试开启guest远程访问

    尝试2:尝试开启guest远程访问(请参考:https://www.cnblogs.com/mingaixin/p/4134920.html)

      开启guest远程访问的方法是:将rabbitmq安装目录下ebin目录下rabbit.app中loopback_users里的<<"guest">>删除,重启rabbitmq服务,结果成功了

     
  • 相关阅读:
    Windows7共享设置
    13-运算符
    13-数据类型转换
    06-移动web之flex布局
    09-sass
    08-less预处理器
    移动端必须掌握知识点
    11-JS变量
    10-响应式
    07-rem
  • 原文地址:https://www.cnblogs.com/tjudzj/p/9223748.html
Copyright © 2011-2022 走看看