目錄
- 寫在前面
- 一、服務搭建
- 二、基本架構
- 2.1、user
- 2.2、Virtual host
- 2.3、policies
- 2.4、Exchange
- 2.5、Queue
- 三、服務端指令學習
- 3.1、使用者管理
- 3.2、虛拟主機管理
- 3.3、服務狀态、叢集監控
- 四、更多用戶端API使用,可參考[連結](javascript:void(0))
- 五、關于 Rest API 可參考連結
寫在前面
這裡介紹下RabbitMQ的相關架構,還有服務端的相關指令
rabbitMQ是Erlang語言開發的消息中間件,會不同于kafka,RocketMQ
rabbitMQ中多了User(Tag)、Virtual Hosts(綁定使用者,Tag)、policy(這裡更進階的操作,多機房部署,異地多活機制)
本篇包括以下幾個方面的學習
- 服務搭建
- 服務端指令學習
- 基本架構
- 頁面管理、監控
- 更多用戶端API操作,可連結
一、服務搭建
docker pull rabbitmq:3.8-management
docker run -d --name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v /my/rabbitmq/data:/var/lib/rabbitmq \
--hostname myrabbit \
-e RABBITMQ_DEFAULT_VHOST=/vhost \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=root \
rabbitmq:3.8-management
頁面管理
http://localhost:15672/
二、基本架構
架建構立在 虛拟主機和使用者上
2.1、user
2.2、Virtual host
知識點
-
虛拟主機,一般設定是要綁定使用者權限的(會預設綁定管理者使用者),頁面這裡并沒有展現!!
可以指令行 綁定虛拟主機使用者權限,參考下文
policies 是虛拟主機的參數配置,
2.3、policies
policies 是參數配置
這個設定也是RabbitMQ不同于其他MQ的東西,可以設定Queue和Exchange的相關參數,異地多活實作中會用到這個參數配置
2.4、Exchange
Exchange和Queue才是我們的操作和監控對象…,
這個Exchange是一個比較重要的概念,交換機
每個 交換機都會預設7 個交換機,會有四種不同的類型
- direct
- fanout
- headers
- topic
一般使用時,會自定義交換機,綁定 Routing key 路由到不同的queue中,
,或 不自定義交換機,使用 預設的 AMQP Default ,這個時候, Routing key == Queue Name
2.5、Queue
需要注意 Queue 的知識點
- Type - - Classic(經典) / Quorum(法定)
- Durability - - Durable(耐用,持久存儲) / transient(臨時存儲)
- autoDelete - - NO / YES
- Priority 優先級
Queue可以定義優先級(0-255),使用時,注意 2 點
- 将隊列聲明為優先級隊列,即在建立隊列的時候添加參數 x-max-priority 以指定最大的優先級,值為0-255(整數)。
- 為優先級消息添加優先級(範圍在隊列優先級最大值内生效)。
三、服務端指令學習
3.1、使用者管理
添加使用者
rabbitmqctl add_user username password
列出所有使用者
rabbitmqctl list_users
删除使用者
rabbitmqctl delete_user username
清除使用者權限
rabbitmqctl clear_permissions -p vhostpath username
列出使用者權限
rabbitmqctl list_user_permissions root
修改密碼
rabbitmqctl change_password username newpassword
3.2、虛拟主機管理
列出是以虛拟主機:
rabbitmqctl list_vhosts
列出虛拟主機上的所有權限:
rabbitmqctl list_permissions -p h3
建立虛拟主機:
rabbitmqctl add_vhost h3
設定使用者權限:
rabbitmqctl set_permissions -p h3 username ".*" ".*" ".*"
删除虛拟主機:
rabbitmqctl delete_vhost vhost h3
3.3、服務狀态、叢集監控
移除所有資料,要在 rabbitmqctl stop_app 之後使用: rabbitmqctl reset
組成叢集指令: rabbitmqctl join_cluster <clusternode> [--ram]
檢視叢集狀态: rabbitmqctl cluster_status
修改叢集節點的存儲形式: rabbitmqctl change_cluster_node_type disc | ram
摘除節點:rabbitmqctl forget_cluster_node [--offline]
修改節點名稱:rabbitmqctl rename_cluster_node oldnode1 newnode1