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服務,結果成功了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM