RabbitMQ簡介與安裝

2020-08-12 09:02:53

介紹

來自百度百科

RabbitMQ是實現了高階訊息佇列協定(AMQP)的開源訊息代理軟體(亦稱訊息導向中介層)。RabbitMQ伺服器是用Erlang語言編寫的,而叢集和故障轉移是構建在開放電信平臺框架上的。所有主要的程式語言均有與代理介面通訊的用戶端庫。

作用

  • 解耦:服務應用之間通過MQ連線,服務之間由強依賴轉變爲弱依賴
  • 削峯填谷:短暫一段時間內擠壓的訊息,慢慢處理,起到削峯填谷
  • 訊息通訊:對等、發佈訂閱式

MQ對比

在这里插入图片描述
圖片來自網上,如果侵權,我就刪了,認慫。選擇哪種MQ根據實際情況而定

叢集模式

  • 主從:master 主節點負責讀寫,掛了切到slave 上
  • 映象叢集:高可用叢集,低延遲、不會丟數據。由於是映象模式每個叢集都是全量數據,橫向擴容比較難,節點越多寫入比較麻煩,吞吐量會降低
  • 多活叢集:異地容災,數據拷貝,叢集內部負載均存取,外部異地叢集通過一些外掛實現數據同步、複製

RabbitMQ安裝

# 安裝erlang 
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v22.3.4.5/erlang-22.3.4.5-1.el7.x86_64.rpm
rpm -ivh erlang-22.3.4.5-1.el7.x86_64.rpm 
#驗證是否成功
erl v 
# 下載rabbitMQ
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.6/rabbitmq-server-3.8.6-1.el7.noarch.rpm
rpm -ivh rabbitmq-server-3.8.6-1.el7.noarch.rpm
# 安裝可能會出現錯誤 warning: rabbitmq-server-3.8.6-1.el8.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 6026dfca: NOKEY error: Failed dependencies:        socat is needed by rabbitmq-server-3.8.6-1.el8.noarch, 需要安裝  socat
yum -y socat #安裝好 socat 重試即可
rabbitmq 安裝目錄: /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.6

#啓動
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.6
# 開機啓動
chkconfig rabbitmq-server on
/sbin/service rabbitmq-server start
#停止
/sbin/service rabbitmq-server stop
# 檢視外掛
rabbitmq-plugins list
# 設定用戶端外掛
rabbitmq-plugins enable  rabbitmq_management

rabbitmq 埠預設:5672, 用戶端預設埠:15672

預設 guest/guest 可能不能登陸,新增一個 admin 使用者,等即可

常用命令

# 關閉應用
rabbitmqctl stop_app
# 啓動應用
rabbitmqctl start_app
# 節點狀態
rabbitmqctl status
#叢集狀態
rabbitmqctl cluster_status 
# 新增使用者密碼
rabbitmqctl add_user admin admin
# 使用者授權
rabbitmqctl set_user_tags admin administrator
# 修改使用者密碼
rabbitmqctl change_password username password
# 列出所有使用者
rabbitmqctl list_users
# 刪除使用者
rabbitmqctl delete_user username
# 列出使用者許可權
rabbitmqctl list_user_permissions username
# 清除使用者許可權
rabbitmqctl clear_permissions -p vhostpath username
# 設定使用者許可權
# 三個*對應:configure write read
rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*"
rabbitmqctl set_permissions -p / ikang".*" ".*" ".*"
# 列出所有虛擬主機
rabbitmqctl list_vhosts
# 建立虛擬主機
rabbitmqctl add_vhost vhostpath
# 列出虛擬主機的許可權
rabbitmqctl list_permissions -p vhostpath
# 刪除虛擬主機
rabbitmqctl delete_vhost vhostpath
# 檢視所有佇列
rabbitmqctl list_queues
# 清除佇列裡的訊息
rabbitmqctl -p vhostpath purge_queue queueName
# 清除所有數據
rabbitmqctl reset