1. 先下載並安裝Erlang
1.1 官網下載對應版本的安裝包安裝;
1.2.設置ErLang環境變量,配置Erlang的bin目錄到系統變量Path,
1.3 命令行輸入 erl 命令 檢查是否安裝成功:
2.安裝RabbitMQ
2.1 官網下載安裝包並安裝;
2.2 安裝完成后 命令行切換到安裝目錄的sbin下(也可以配置環境變量)
輸入命令啟動 rabbitmq_managemen(RabbitMQ的管理后台的插件)
rabbitmq-plugins enable rabbitmq_management
2.3 服務已經默認開啟,如果沒有開啟,可以輸入命令手動開啟:
rabbitmq-server start
2.4 登陸管理界面
開啟瀏覽器訪問http://localhost:15672
默認userName:guest password:guest
3. 基本概念和操作
- RabbitMQ 默認監聽端口是5672
- Broker:簡單來說就是消息隊列服務器實體。
- Exchange:消息交換機,它指定消息按什么規則,路由到哪個隊列。
- Queue:消息隊列載體,每個消息都會被投入到一個或多個隊列。
- Binding:綁定,它的作用就是把exchange和queue按照路由規則綁定起來。
- Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞。
- vhost:虛擬主機,一個broker里可以開設多個vhost,用作不同用戶的權限分離。
- producer:消息生產者,就是投遞消息的程序。
- consumer:消息消費者,就是接受消息的程序。
- channel:消息通道,在客戶端的每個連接里,可建立多個channel,每個channel代表一個會話任務。
3.1 基本操作
重啟服務:
net stop RabbitMQ && net start RabbitMQ
RabbitMQ啟動和關閉
rabbitmq-service start
rabbitmq-service stop
3.2 用戶管理
(1)查看已有用戶及用戶的角色:
rabbitmqctl.bat list_users
(2)新增一個用戶:
rabbitmqctl.bat add_user {{username}} {{password}}
(3)設置用戶角色:
rabbitmqctl.bat set_user_tags {{username}} administrator
rabbitmq用戶角色可分為五類:
- 超級管理員(administrator)
可登陸管理控制台(啟用management plugin的情況下),可查看所有的信息,並且可以對用戶,策略(policy)進行操作。
- 監控者(monitoring)
可登陸管理控制台(啟用management plugin的情況下),同時可以查看rabbitmq節點的相關信息(進程數,內存使用情況,磁盤使用情況等)
- 策略制定者(policymaker)
可登陸管理控制台(啟用management plugin的情況下), 同時可以對policy進行管理。
- 普通管理者(management)
僅可登陸管理控制台(啟用management plugin的情況下),無法看到節點信息,也無法對策略進行管理。
- 無角色
無法登陸管理控制台,通常就是普通的生產者和消費者。
(4)一個用戶可以同時具有多個角色:
rabbitmqctl.bat set_user_tags {{username}} {{tag1}} {{tag2}} ...
(5)更改用戶密碼:
rabbitmqctl change_password {{userName}} {{newPassword}}
(6)刪除用戶:
rabbitmqctl.bat delete_user {{username}}
3.3 vhost管理和權限設置
- 當我們在創建用戶時,會指定用戶能訪問一個虛擬主機,並且該用戶只能訪問該虛擬機下的隊列(queue)和交換機(exchange),如果沒有指定,默認的是”/”。
- 每一個vhost本質上是一個mini版的RabbitMQ服務器,擁有自己的交換機、隊列、綁定等,擁有自己的權限機制。vhost之於Rabbit就像虛擬機之於物理機一樣。
- 一個rabbitmq服務器上可以運行多個vhost,以便於適用不同的業務需要,這樣做既可以滿足權限配置的要求,也可以避免不同業務之間隊列、交換機的命名沖突問題,因為不同vhost之間是隔離的。
- 用戶權限指的是用戶對exchange,queue的操作權限,包括配置權限,讀權限、寫權限(ConfP WriteP ReadP)。
(1) 新增虛擬主機:
rabbitmqctl add_vhost {{vhost_name}}
(2) 設置用戶權限
rabbitmqctl set_permissions -p {{vhost_name}} {{username}} ConfP WriteP ReadP
(3) 查看(指定hostpath)所有用戶的權限信息
rabbitmqctl list_permissions [-p {{vhost_name}}]
(4) 查看指定用戶的權限信息
rabbitmqctl list_user_permissions {{username}}
(5) 清除用戶的權限信息
rabbitmqctl clear_permissions [-p {{vhost_name}}] User
(6) 查看所有vhost
rabbitmqctl list_vhosts
(7) 刪除vhost
rabbitmqctl delete_vhost {{vhost_name}}
3.4 隊列管理
查看所有的隊列:
rabbitmqctl list_queues
清除所有的隊列:
rabbitmqctl reset