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服务,结果成功了

     
  • 相关阅读:
    windows service 安装和卸载指令
    jackson 进行json与java对象转换 之四
    jackson 进行json与java对象转换 之三
    jackson 进行json与java对象转换 之二
    jackson 进行json与java对象转换 之一
    jackson2.x与Jackson1.9的比较
    判断Integer值相等不能用==
    java:String使用equals和==比较的区别
    Java中自定义枚举(Enum)项的值,可设置为指定的值
    Java enum(枚举)使用详解之四
  • 原文地址:https://www.cnblogs.com/tjudzj/p/9223748.html
Copyright © 2011-2022 走看看