到今天我依舊不能忘記那天讓rabbitmq支配的我,到頭來還是坑了自己
為什么這樣說呢?因為通過這次rabbitmq的安裝,我充分了解到:
英語好是很重要的一件事情,特別當你神志不清時,着急只會讓你更加着急,而不能對你有絲毫的幫助
講了一堆廢話0o 0下面講一下我悲慘的安裝歷程,希望能夠給大家提供一點幫助
當我了解到我要學習一些不一樣的東西時,我是很開心的,只能說人類果然還是對未來看的太美好啊!
假如你不是第一次安裝rabbitmq
這不是你的第一次安裝,所以在你安裝新的rabbitmq請確保erlang文件和rabbitmq文件已經完全刪除
刪除erl文件時有empd.exe文件運行導致不能不刪除,請在任務管理器中找到該進程並停止運行后刪除
當然你也可能會找不到這個進程,那么就請重啟然后就能刪除erlang文件了
通過regedit打開注冊表
找到HKEY_LOCAL_MACHINE\SOFTWARE\Ericsson\Erlang\ErlSrv
把其下所有項刪除
檢查端口是否被占用
netstat -ano 查看所有打開的端口
netstat -aon|findstr "4369" 檢查4369端口情況
tasklist|findstr "13876" 返回對應pid進程
環境配置,erlang
本人參照教程http://www.cnblogs.com/ericli-ericli/p/5902270.html進行安裝
注意,為了避免麻煩,請務必以administrator管理員賬戶登錄
- 以管理員身份打開cmd 輸入net user administrator /active:yes即可開啟管理員賬戶
- 同理輸入net user administrator /active:no關閉管理員賬戶
第一步,當然是上網找教程,百度rabbitmq安裝Windows
rabbitmq使用erlang開發,先配置好erlang環境
erlang下載地址:http://www.erlang.org/downloads
恩,一開始就有麻煩,使用的是chrome,點擊沒有反應,那沒辦法右鍵復制鏈接到迅雷新建任務下載好
安裝erlang就一直下一步就好了
好噠,接下來配置下環境變量
我的電腦--》屬性--》高級系統設置--》環境變量
先檢查一下系統變量中ERLANG_HOME有沒有,無則添加ERLANG_HOME C:\Program Files\erl8.2
點擊編輯環境變量,即系統變量中的path,添加C:\Program Files\erl8.2\bin
到此打開cmd,輸入erl,Eshell V8.2 (abort with ^G)(test_node@joeypc)1>這表明你裝好了,一般教程上是這樣說的
但是如果你是在接下來安裝rabbitmq出現:
Can't set short node name!
Please check your configuration
或者:
Error: Failed to initialize erlang distribution: {{shutdown, {failed_to_start_child, net_kernel, {'EXIT',nodistribution}}}, {child,undefined, net_sup_dynamic, {erl_distribution, start_link, [['rabbitmq-cli-70', shortnames]]}, permanent,1000,supervisor, [erl_distribution]}}.
以上報錯,請在cmd中輸入erl -sname test_node以再次確認erlang已經成功安裝
返回結果為Eshell V8.2 (abort with ^G)說明正確
假如出現以上錯誤,你可以嘗試以下解決辦法:
- 首先查看你的計算機名中是否包含中文,假如包含中文請去除中文
- 恩,暫時就以上一點
安裝rabbitmq
下載地址https://www.rabbitmq.com/download.html選擇相應下載即可
下載好后,按照默認安裝好即可
下載好后C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin運行rabbitmq-server start即可運行
激活 RabbitMQ's Management Plugin
使用RabbitMQ 管理插件,可以更好的可視化方式查看Rabbit MQ 服務器實例的狀態。
在C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin目錄下:
輸入rabbitmq-plugins.bat
再輸入enable rabbitmq_management
====================================================================================
哈哈,就不寫重復的東西了,下面就直接扒過來 再次聲明取自:http://www.cnblogs.com/ericli-ericli/p/5902270.html
====================================================================================
這樣,就安裝好插件了,是不是能使用了呢?別急,需要重啟服務才行,使用命令:
net stop RabbitMQ && net start RabbitMQ
這時候的,也許會出現這種結果:

“發生錯誤:發生系統錯誤 5。 拒絕訪問。”
這是什么鬼?查了下,原來,5代表的是:不是系統管理員權限。
問題解決方案:使用管理員打開cmd再執行此命令:

這樣就結束了嗎?當然沒有。
創建用戶,密碼,綁定角色
使用rabbitmqctl控制台命令(位於C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin>)來創建用戶,密碼,綁定權限等。
注意:安裝路徑不同的請看仔細啊。
rabbitmq的用戶管理包括增加用戶,刪除用戶,查看用戶列表,修改用戶密碼。
查看已有用戶及用戶的角色:
rabbitmqctl.bat list_users

新增一個用戶:
rabbitmqctl.bat add_user username password

此時來看下我們當前用戶哈:

eric 后面沒有“[administrator]”
這個administrator是干嘛用的呢?這就涉及到用戶角色問題了:
按照我個人理解,rabbitmq用戶角色可分為五類:超級管理員, 監控者, 策略制定者, 普通管理者以及其他。
(1) 超級管理員(administrator)
可登陸管理控制台(啟用management plugin的情況下),可查看所有的信息,並且可以對用戶,策略(policy)進行操作。
(2) 監控者(monitoring)
可登陸管理控制台(啟用management plugin的情況下),同時可以查看rabbitmq節點的相關信息(進程數,內存使用情況,磁盤使用情況等)
(3) 策略制定者(policymaker)
可登陸管理控制台(啟用management plugin的情況下), 同時可以對policy進行管理。
(4) 普通管理者(management)
僅可登陸管理控制台(啟用management plugin的情況下),無法看到節點信息,也無法對策略進行管理。
(5) 其他的
無法登陸管理控制台,通常就是普通的生產者和消費者。
好啦,我們也給 eric 變成 “超級管理員” 角色:
rabbitmqctl.bat set_user_tags username administrator

再看下結果哈:

當然,除了上面的administrator 還有 monitoring、policymaker、management、自定義名稱 ,對應上面介紹到的不同的角色。
像我們人一樣,我們角色除了是公司的員工,還是父母的孩子、子女的爸媽等,用戶也可以同時具有多個角色,設置方式:
rabbitmqctl.bat set_user_tags username tag1 tag2 ...

恩,現在總覺得guest 這個不安全(它的默認密碼是guest),想更改密碼,好辦:
rabbitmqctl change_password userName newPassword

有的人也許會說,我就是看guest不爽,老子新增了administrator用戶了,就是想干掉它,可以:
rabbitmqctl.bat delete_user username

這時,可能有人就要問了:命令框是只有一個用戶了,你怎么操作啊?怎么查看執行情況啊/
當然有路子啦:
使用瀏覽器打開 http://localhost:15672 訪問Rabbit Mq的管理控制台,使用剛才創建的賬號登陸系統:


其實,除了可查看所有的信息 ,上面的命令 增刪改查、權限設置,都可以在這個頁面完成,還可以依據業務需求設置策略(policy),具體的就不在這里啰嗦了,大家可以看看網上的帖子。
權限設置
用戶有了角色,那也需要權限設置啊,別急,慢慢來:
按照官方文檔,用戶權限指的是用戶對exchange,queue的操作權限,包括配置權限,讀寫權限。
我們配置權限會影響到exchange、queue的聲明和刪除。
讀寫權限影響到從queue里取消息、向exchange發送消息以及queue和exchange的綁定(binding)操作。
例如: 將queue綁定到某exchange上,需要具有queue的可寫權限,以及exchange的可讀權限;向exchange發送消息需要具有exchange的可寫權限;從queue里取數據需要具有queue的可讀權限
權限相關命令為:
(1) 設置用戶權限
rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP
(2) 查看(指定hostpath)所有用戶的權限信息
rabbitmqctl list_permissions [-p VHostPath]
(3) 查看指定用戶的權限信息
rabbitmqctl list_user_permissions User
(4) 清除用戶的權限信息
rabbitmqctl clear_permissions [-p VHostPath] User
現在環境搭好了,用戶、角色、權限全部設置好,開始進行code(原理整理,及編碼 待續)
參考:
安裝參考 http://www.rabbitmq.com/install-windows-manual.html
權限內容參考 http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
權限命令摘自 https://my.oschina.net/hncscwc/blog/262246
以上
