天天看點

RabbitMQ學習-服務端學習

目錄

  • ​​寫在前面​​
  • ​​一、服務搭建​​
  • ​​二、基本架構​​
  • ​​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/      
RabbitMQ學習-服務端學習

二、基本架構

架建構立在 虛拟主機和使用者上

2.1、user

RabbitMQ學習-服務端學習

2.2、Virtual host

RabbitMQ學習-服務端學習

知識點

  • 虛拟主機,一般設定是要綁定使用者權限的(會預設綁定管理者使用者),頁面這裡并沒有展現!!

    可以指令行 綁定虛拟主機使用者權限,參考下文

policies 是虛拟主機的參數配置,

2.3、policies

policies 是參數配置

RabbitMQ學習-服務端學習

這個設定也是RabbitMQ不同于其他MQ的東西,可以設定Queue和Exchange的相關參數,異地多活實作中會用到這個參數配置

2.4、Exchange

Exchange和Queue才是我們的操作和監控對象…,

RabbitMQ學習-服務端學習

這個Exchange是一個比較重要的概念,交換機

每個 交換機都會預設7 個交換機,會有四種不同的類型

  • direct
  • fanout
  • headers
  • topic

一般使用時,會自定義交換機,綁定 Routing key 路由到不同的queue中,

RabbitMQ學習-服務端學習

,或 不自定義交換機,使用 預設的 AMQP Default ,這個時候, Routing key == Queue Name

RabbitMQ學習-服務端學習

2.5、Queue

RabbitMQ學習-服務端學習

需要注意 Queue 的知識點

  • Type - - Classic(經典) / Quorum(法定)
  • Durability - - Durable(耐用,持久存儲) / transient(臨時存儲)
  • autoDelete - - NO / YES
  • Priority 優先級

Queue可以定義優先級(0-255),使用時,注意 2 點

  1. 将隊列聲明為優先級隊列,即在建立隊列的時候添加參數 x-max-priority 以指定最大的優先級,值為0-255(整數)。
  2. 為優先級消息添加優先級(範圍在隊列優先級最大值内生效)。

三、服務端指令學習

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      
RabbitMQ學習-服務端學習

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      

四、更多用戶端API使用,可參考​​連結​​

五、關于 Rest API 可參考連結