顯示具有 RabbitMQ 標籤的文章。 顯示所有文章
顯示具有 RabbitMQ 標籤的文章。 顯示所有文章

2015年8月13日 星期四

RabbitMQ setHost的ip之後 client 無法與 server 連線問題

RabbitMQ setHost的ip之後 client 無法與 server 連線問題 (localhost却可以)

 


今天在開發 RabbitMQ 的 client 程式時發現只要是設定server 的 ip 就無法連線但是用 localhost 就可以連線,狀況是 client 端的程式想要連結到這個 RabbitMQ 去 Send 資料或是要去MQ Receive 資料的時後會出問題錯誤訊息如下面紅色小字,觀察的結果是程式中的 factory.setHost("localhost") 就可以正常連線存取 queue,但是若是將 factory.setHost("10.64.1.1"); 類似這樣的IP方式指定就跑不起來,錯誤訊息如下,不過我的 client 程式一定和 mqserver 不在同一台機器上,所以這個問題一定要被解決的。




 


Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.


at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:338)


at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:590)


at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:612)


at Send.main(Send.java:17)


 


 


爬文了半天才知道原因就是預設連線的時後不設定 connect 的 user 時預設是會採用 guest/guest 這組帳密 ,若是你將localhost改成某個ip 位址時,這時後你就必需要指定這個 RabbitMQ 的存取帳密 (因為 guest 只能連結localhost無法連結ip),因此你的client 程式端必需要作下列的設定來指出user name , pass word , host ip and host port ,有了這些資訊之後你的 RabbitMQ Client 才有正確的連結到 rabbitmqserver。


 






 


問題很好解決,不過也爬文爬了三個多小時才找到解決方法,一開始是想要透過rabbitmq-env.conf去指定rabbitmq.config中設定新增user ,讓 client 端程式可以使用新的一組帳密而不透過 default 的 guest/guest 來連接 server (這組預設帳號只能連localhost,不能指定 ip),不過在加設定的那一段 config file 一直出問題,所以我就改另外一個網路找到的方式,透過sudo rabbitmqctl add_user 指令來新增 rabbitmq 的新使用者,這樣子就可以在client 程式中指定用這個新建立的使用者並可以用ip的方式來設定 factory.setHost("10.64.1.1"),經測試新增 user 並修改 client code 之後成功可以連線存取 rabbitmq。


 


新增 RabbitMQ user test/test ,並且把 test 加入管理員權限


sudo rabbitmqctl add_user test test


sudo rabbitmqctl set_user_tags test administrator


sudo rabbitmqctl set_permissions -p / test ".*" ".*" ".*"


 


meson@meson-VirtualBox:/etc/rabbitmq$ sudo rabbitmqctl add_user test test


Creating user "test" ...


 


meson@meson-VirtualBox:/etc/rabbitmq$ sudo rabbitmqctl set_user_tags test administrator


Setting tags for user "test" to [administrator] ...


 


meson@meson-VirtualBox:/etc/rabbitmq$ sudo rabbitmqctl set_permissions -p / test ".*" ".*" ".*"


Setting permissions for user "test" in vhost "/" ...







▼覺得本站資訊不錯,請不吝給個讚,感謝您▼


 



 



然後 client 端的程式,直接像下列的方式指定用 test/test 來連結 rabbitmq 終於成功了!


factory.setUsername("test"); //Default username


factory.setPassword("test"); //Default password


factory.setVirtualHost("/"); // set the virtual host


factory.setHost("10.57.46.1"); //set the IP Address


factory.setPort(5672); //Default Port


2015年8月12日 星期三

Windows 安裝 RabbitMQ 筆記教學

Windows 安裝 RabbitMQ 筆記教學



最近需要用到一些 Open Source 的 Message Queue 技術,因此開始 survey RabbitMQ 基本上這個兔子 Queue 可以安裝在 Linux 上也可以安裝在 Windows 上,安裝了 Queue 之後就可以將Message 透過Sender 程式送進去 Queue ,先進先出,若是沒有 receiver 程式來 Queue 中將 Message 取走他就會一直堆積愈來愈多,理論上只要有足夠多的儲存 message 空間就可以往 Queue 當中送進更多的 Message,以下記錄了這一次在 Windows 8 上面安裝 RabbitMQ 的筆記,下次再來分享我在 Ubuntu 上面安裝 RabbitMQ 以及用 Python 及 Java 寫出的 RabbitMQ Sender 及 Receiver 程式。





 


1.先安裝 Erlang 套件


要在 windows 環境下安裝 RabbitMQ 必需要先安裝 Erlang 套件,目前的版本是 Erlang OTP 18.0,我的作業系統是 win64 所以下載


 


下載以及安裝 Erlang 套件一直按 next 就對了


 


OTP 18.0 Windows 64-bit Binary File (95.1 MB)




 


在 windows 下新增二組環境變數


ERLANG_HOME=C:\Program Files\erl7.0


添加到PATH=%ERLANG_HOME%\bin;


 


PS: 可以透過 command env 叫出修改環境變數的頁面


 


 


2.安裝 RabbitMQ


 



執行rabbitmq-server-3.5.4,動作非常的快,一下子 next 完就安裝完畢了。


 


設置環境變數:


RABBITMQ_SERVER=C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.4


PATH=%RABBITMQ_SERVER%\sbin;



3. Enable RabbitMQ的plugin



安裝完之後在 command line 下執行下列指令


cd %RABBITMQ_SERVER%\sbin


rabbitmq-plugins enable rabbitmq_management


RABBITMQ_LOG_BASE = C:\Logs\RabbitMQ






 


4.安裝完成後透過 command line 可以啟動 rabbitMQ


rabbitmq-service.bat stop


rabbitmq-service.bat install


rabbitmq-service.bat start




 


5. 確認 rabbitMQ 啟動狀態指令


rabbitmqctl status


Status of node 'rabbit@MESONWU-PC' ...


 








▼覺得本站資訊不錯,請不吝給個讚,感謝您▼