1. 程式人生 > 程式設計 >RabbitMQ入門(一)—— CentOS7 搭建 RabbitMQ

RabbitMQ入門(一)—— CentOS7 搭建 RabbitMQ

本文以RabbitMq的執行搭建做一個簡單的筆記

MQ (Message Que)的作用

  1. 非同步:提高業務上的響應速度。
  2. 解耦:將邏輯處理轉移到佇列裡面來。當消費邏輯有修改時,只改Consumer,不用去改動Producer
  3. 自動補償與重試:MQ在消費失敗後會自動去重試傳送訊息。
  4. 保證消費順序:佇列本身是先進先出(FIFO)的特性,能夠根據訊息進入佇列的順序去進行消費
  5. 削峰填谷:這個和非同步有些像,不同的是,這個主要是為了減少消費端在某一瞬間承受了巨大的併發量

目前市面上的幾種MQ(RabbitMQ,Kafka,RocketMQ等)

可以參考下面的文章: 訊息中介軟體部署及比較:rabbitMQ、activeMQ、zeroMQ、rocketMQ、Kafka、redis

RabbitMQ的主要優點:

  1. erLang語言天生支援高併發
  2. MQ的環境搭建比較簡便
  3. 有著較好的訊息確認機制以及訊息的持久化
  4. 高度可定製的路由策略
  5. 頁面管理方便,社群活躍度較高

RabbitMQ 實戰

CentOS7 下的RabbitMQ安裝

各種環境下安裝和使用的官方檔案

  1. 安裝Erlang環境 wget https://github.com/rabbitmq/erlang-rpm/releases/download/v22.2/erlang-22.2-1.el7.x86_64.rpm #下載最新的Erlang包,當前版本是22.2,因為最新的RabbitMQ的版本為3.8.1,需要的最低版本的erLang為21.3

    yum install erlang-22.2-1.el7.x86_64.rpm # 安裝erLang 沒有安裝wget的話要先執行下面命令安裝wget yum install wget

  2. 下載rabbitMQ的rpm包 (這裡下載的是CentOS7的版本,如果為CentOS8,則連線中的el7要改成el8) wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.1/rabbitmq-server-3.8.1-1.el7.noarch.rpm

  3. 安裝RabbitMQ yum install rabbitmq-server-3.8.1-1.el7.noarch.rpm

  4. 啟動RabbitMQ chkconfig rabbitmq-server on #設定rabbitmq 服務為開機啟動 /sbin/service rabbitmq-server start #啟動 /sbin/service rabbitmq-server stop #關閉 或者 /bin/systemctl start rabbitmq-server.service #啟動 /bin/systemctl start rabbitmq-server.service #關閉

  5. 啟動UI外掛,建立登入使用者 rabbitmq-plugins enable rabbitmq_management #啟動管理外掛,下次無需再手動啟動該外掛 rabbitmqctl list_users #檢視當前有多少使用者

    [root@c5 ~]# rabbitmqctl list_users
    Listing users ...
    user    tags
    guest   [administrator]
    複製程式碼

    那我們需要手動新增一個使用者,並且使用者許可權也要設定為administrator rabbitmqctl add_user admin 123456 #設定使用者賬號和密碼 rabbitmqctl set_user_tags admin administrator #設定許可權

    然後就可以使用admin賬號進行登入了

    在這裡插入圖片描述

附:埠號作用

在這裡插入圖片描述
預設的埠15672:rabbitmq管理平臺埠號 預設的埠5672: rabbitmq訊息中間內部通訊的埠 預設的埠號25672 rabbitmq叢集的埠號

總結:

  1. 安裝過程中,erLang版本的問題
  2. UI介面和埠的問題
  3. 登入使用者及許可權分配的問題

疑難問題

  1. 瀏覽器訪問15672埠(預設佇列用的是5672埠,UI用的是15672埠),用預設的 guest/guest登入 然而此時我瀏覽器訪問的時候卻遇到這樣一個情況:UI管理埠被拒絕了

    在這裡插入圖片描述
    解決方法: 這是因為當前的UI外掛還沒有啟動,執行下面命令即可。 rabbitmq-plugins enable rabbitmq_management #啟動管理外掛,下次無需再手動啟動該外掛

  2. 使用guest訪問時發現該賬戶是有訪問限制的。

    在這裡插入圖片描述
    解決方法: 需要手動給他建立一個賬戶。 那我們需要手動新增一個使用者,並且使用者許可權也要設定為administrator rabbitmqctl add_user admin 123456 #設定使用者賬號和密碼 rabbitmqctl set_user_tags admin administrator #設定許可權

然後就可以使用admin賬號進行登入了