RabbitMQ入門教程(一):安裝和常用命令
一:Mac安裝
Mac安裝比Windows安裝更加方便,也不需要再額外配置Web外掛,因為在安裝的時候預設已經配置好了
// 在Updating Homebrew...時可能會卡一會,只需要等就行了
// 在安裝的過程中可能因為網路問題,可能會有部分會失敗,此時只需要載次執行該命令,直到全部成功即可,注意一定要檢查一下是否有部分失敗,為安全起見,可以多執行幾次該命令
brew install rabbitmq
// 配置環境變數,將下面新增到~/.bash_profile中即可
export PATH=$PATH:/usr/local/sbin
// 立即生效
source ~/.bash_profile
// 啟動RabbimtMQ服務, 注意安裝最新版的不需要再單獨安裝外掛了,預設已經安裝過了,可以通過使用引數 -detached 以守護的方式後臺執行
rabbitmq-server
安裝成功後就可以在瀏覽器上看到如下登入頁面, 在位址列中輸入http://localhost:15672/,Username:guest Password:guest, 使用訪客賬號就可登入進去
二:Windows安裝
Windows安裝需要先安裝Erlang,再安裝RabbitMQ,再配置外掛,在配置外掛的時候可能會出現錯誤
第一步:安裝Erlang OTP,由於RabbitMQ是用Erlang編寫的,所以在安裝RabbitMQ之前要先安裝Erlang 下載地址:http://www.erlang.org/downloads 下載最新版本即可,例如OTP 20.0 Windows 64-bit Binary File, 下載完成後解壓,雙擊otp_win64_20.0.exe 一路next即可,安裝成功後需要配置環境變數,可以新建一個變數,例如ERLANG_HOME=D:\erl9.0,最後將環境變數追加到Path中去Path中追加:%ERLANG_HOME\bin%;
第二步:安裝RabbitMQ,在官網上下載最新的RabbitMQ(http://www.rabbitmq.com/) 雙擊rabbitmq-server-3.6.10 一路next即可,安裝成功後同樣需要配置環境變數,將D:\RabbitMQ\rabbitmq_server-3.6.10\sbin追加到Path中
第三步:安裝RabbitMQ Management 外掛,執行命令:rabbitmq-plugins enable rabbitmq_management 如果幸運的話一步成功,不知道最新版本會不會好安裝,如果在安裝中報錯,要根據具體錯誤來解決
// 錯誤1:Plugin configuration unchanged
D:\RabbitMQ\rabbitmq_server-3.6.10\sbin>rabbitmq-plugins enable rabbitmq_management
Plugin configuration unchanged.
Applying plugin configuration to [email protected]-PC... failed.
* Could not contact node [email protected]-PC.
Changes will take effect at broker restart.
* Options: --online - fail if broker cannot be contacted.
--offline - do not try to contact broker.
解決辦法:將C:\Windows\.erlang.cookie 覆蓋到C:\Users\使用者名稱下的.erlang.cookie檔案
然後重新安裝:D:\RabbitMQ\rabbitmq_server-3.6.10\sbin>rabbitmq-plugins enable rabbitmq_management
// 錯誤2:noting to do.
1.rabbitmq-plugins.bat enable rabbitmq_management
2.rabbitmq-service.bat stop
3.rabbitmq-service.bat install 這句話沒用,提示:RabbitMQ service is already present - onlyupdating service parameters
4.rabbitmq-service.bat start
開啟瀏覽器登入:http://127.0.0.1:15672
RabbitMQ Management 非常重要,它可以用來管理RabbitMQ,操作(CRUD)各種資料,在開發中和生產中都經常用到。
三:常用命令
一臺物理機器上可以有多個erlang節點(例項),每個節點可以執行多個應用程式,其中重要的應用程式有RabbitMQ、Erlang語言自帶的Mnesia資料庫,以及RabbitMQ相關的外掛(如RabbitMQ Management)。可以將Erlang節點類比於java的JVM。
RabbitMQ Management 是一個用於操作RabbitMQ的管理介面,可以操作很多常用的操作,但是並不支援所有的操作,命令列支援所有功能。
rabbitmqctl命令列: 命令列比web管理介面更強大,web介面的命令只是rabbitmqctl命令的一個子集
- 應用程式和叢集管理(Application and Cluster Management)、
- 叢集配置(Cluster management)、
- 使用者管理(User management)、
- 訪問控制(Access Control)、
- 引數管理(Parameter Management)、
- 政策管理(Policy Management)、
- 伺服器狀態(Server Status)
- Miscellaneous
rabbitmq-server // 同時啟動erlang節點和應用程式
// 檢視rabrabbitmqctl所支援的命令
rabrabbitmqctl
// 檢視狀態
rabbitmqctl status
//停止erlang node,同時關閉erlang節點和應用程式
rabbitmqctl stop
// 停止RabbitMQ服務,僅關閉erlang節點上的rabbit應用程式
rabbitmqctl stop_app
// 啟動RabbitMQ服務
rabbitmqctl start_app
// 格式化rabbitmq node(在叢集中需要滿足一定的條件才能關閉)
rabbitmqctl reset
// 強制格式化rabbitmq node
rabbitmqctl force_reset
// 清除某個佇列的所有訊息
rabbitmqctl purge_queue <name>
// 新增使用者
rabbitmqctl add_user <username> <password>
// 設定許可權
rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"
// 列舉許可權
rabbitmqctl list_permissions -p <vhost>
// 列舉使用者的所有許可權
rabbitmqctl list_user_permissions <username>
// 清除許可權
rabbitmqctl clear_permissions -p <vhost> <username>
// 認證使用者
rabbitmqctl authenticate_user <username> <password>
// 修改密碼
rabbitmqctl change_password <username> <password>
// 列舉使用者
rabbitmqctl list_users
// 刪除使用者(刪除使用者時也會把使用者相關的許可權都刪除)
rabbitmqctl delete_user <username>
// 設定tag, tag可以為none最小許可權角色,management 管理員角色,policymaker決策者,monitoring 監控,administrator 超級管理員
rabbitmqctl set_user_tags <username> <tag>
// 新增虛擬主機
rabbitmqctl add_vhost <name>
// 刪除虛擬主機
rabbitmqctl delete_vhost <name>
// 檢視所有虛擬主機
rabbitmqctl list_vhost [<vhostinfoitem> ...]
// 列舉預設虛擬機器上的所有佇列
rabbitmqctl list_queues
// 列出指定虛擬機器上的佇列
rabbitmqctl list_queues -p <vhost>
// 列舉佇列,包含佇列名稱、訊息數目、消費者數目、記憶體使用情況、是否持久化、是否自動刪除
rabbitmqctl list_queues name messages counsumers memory durable auto_delete
// 檢視交換機
rabbitmqctl list_exchanges [name][type][durable][auto_delete]
// 列舉所有繫結
rabbitmqctl list_bindings [-p <vhost>]
command line tool
通過curl命令列來訪問RabbitMQ Management 中的HTTP API(http://localhost:15672/api/), 返回的格式是json格式
rabbitmqadmin
// 列出伺服器上的佇列
rabbitmqadmin list queues
// 清空佇列上的訊息
rabbitmqadmin purge queue name=<queue_name>
rabbitmqadmin -u <username> -p <password> declare exchange name=<exchange_name> type=<type>
// 列舉所有連線
rabbitmqadmin list connections name
// 關閉某個連線
rabbitmqadmin close connection name=<name>
管理RabbitMQ有4中方式
- RabbitMQ Management(Web UI)
- rabbitmqctl
- command line tool(curl)
- rabbitmqadmin
常用配置rabbitmq.config
實際開發中少不了對RabbitMQ的引數進行一些配置,如ip地址,埠號,允許RabbitMQ最大消耗的記憶體等配置,這些配置可以在配置檔案中進行配置/usr/local/etc/rabbitmq/rabbitmq.config