RabbitMQ入門 -- 阿里雲伺服器安裝RabbitMQ

哈哈哈hh發表於2022-06-23

映象下載、域名解析、時間同步請點選  阿里雲開源映象站

一、什麼是MQ?

訊息佇列(Message Queue,簡稱MQ),從字面意思上看,本質是個佇列,FIFO先入先出,只不過佇列中存放的內容是message而已。

其主要用途:不同程式Process/執行緒Thread之間通訊。

佇列是一種先進先出的結構:FIFO

把要傳輸的資料放在佇列中。

把資料放到訊息佇列叫生產者

從訊息佇列取出訊息叫做消費者

二、什麼是RabbitMQ?

RabbitMQ是一套開源(MPL)的訊息佇列服務軟體,是由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實現,由以高效能、健壯以及可伸縮性出名的 Erlang 寫成。

RabbitMQ的特性

  • 可伸縮性:叢集服務
  • 訊息持久化:從記憶體持久化訊息到硬碟,再從硬碟載入到記憶體

三、使用RabbitMQ的好處

解耦

系統A在程式碼中直接呼叫系統B和系統C的程式碼,如果將來D系統接入,系統A還需要修改程式碼,過於麻煩!

系統A可以生成一個id,然後系統B需要這個id,系統A去呼叫了系統B

過了段時間,系統C說也要系統A的id,那麼這時接觸系統B的引用,去講id傳給系統C

這時又來了系統D,系統D也要系統A的id,系統A又解除了系統C,去呼叫了系統D,反反覆覆,很麻煩

系統A的負責人覺得改來改去太麻煩了,沒意思,跑路了。

過段時間,公司來了位大佬,大佬說將系統A的id,存入訊息佇列,誰需要誰去拿,這樣系統A就不用來回改動了,完美解決了引數呼叫問題!

系統A不關心誰去呼叫id,只負責生產資料並存入訊息佇列,其它系統即使掛了或請求超時,也跟系統A沒有任何關係

這樣就實現了系統A、B、C、D之間的解耦!

非同步

再來看看這種情況,系統A還是直接呼叫系統B、C、D

系統A:主要業務

系統B:簡訊業務

系統C:郵箱業務

系統D:處理後續業務

系統A下單成功後會去呼叫系統B,但是如果一個一個的呼叫,會大大的降低效率,假設每個業務執行時間100ms,那麼4個業務執行完畢就是400ms,這種就被稱為阻塞執行

那麼我們的訊息佇列採用了非同步機制,當我們下單完成後,會去非同步的呼叫其它業務,會極大的降低系統的執行時間,提升效率!

削峰/限流

例如:雙十一大促銷,這時的流量是很大很大的,併發很高,比如每秒5000個請求,假設現在又3臺機器處理,並且每臺機器每秒只能處理1500次請求,那麼多出來的請求500請求,會將系統搞垮的,這時我們可以將多出來的請求放入訊息佇列中

這樣即使每秒有10000個請求,也不會將系統搞垮,會在訊息佇列中等待,由系統去分配請求處理

四、Linux環境下手動安裝RabbitMQ

環境準備

阿里雲Centos7.6伺服器

lsb_release -a

file

在2022年5月,RabbitMQ官方釋出推文宣稱最新的版本已經不支援Centos7.x系列,但是我們可以透過下載之前支援的版本來部署!

下載RabbitMQ RPM包

RabbitMQ下載

file

下載成功如下

file

下載ErLang RPM包

這裡需要注意,下載的版本要和RabbitMQ對應,必須支援下載的ErLang版本

file

我們找到下載的是 3.8.13 ,支援的最低是 22.3 最高是 23.x

下載ErLange

file

點選Download下載或單機wget複製下在Linux下 下載

使用FileZilla上傳至阿里雲伺服器

阿里雲伺服器在 /usr/local 下新建 rabbitmq 資料夾

file

上傳完成

安裝ErLang

# 解壓erlang檔案
rpm -Uvh erlang-23.2.7-2.el7.x86_64.rpm
#安裝erlang
yum install -y erlang

file

檢視erlang版本

erl -v

file

安裝並啟動RabbitMQ

在安裝RabbitMQ之前要安裝一個外掛

yum install -y socat

file

解壓並安裝RabbitMQ

# 解壓
rpm -Uvh rabbitmq-server-3.8.13-1.el8.noarch.rpm
# 安裝
yum install -y rabbitmq-server

file

啟動RabbitMQ服務

# 啟動服務
systemctl start rabbitmq-server
# 檢視當前的執行狀態
systemctl status rabbitmq-server
# 重啟服務
systemctl restart rabbitmq-server
# 停止服務
systemctl stop rabbitmq-server

file

可以看到,啟動成功!

五、手動安裝RabbitMQWeb管理介面和授權

安裝並啟動RabbitMQ管理外掛

# 安裝RabbitMQWeb管理外掛
rabbitmq-plugins enable rabbitmq_management
# 安裝完成後重啟rabbitmq服務
systemctl restart rabbitmq-server

file

啟動成功,預設Web頁面佔用埠為 15672,我們去阿里雲伺服器控制檯開放此埠

file

測試訪問

瀏覽器輸入 http://您的ip地址:15672

出現如下介面

file

預設登入賬號密碼 guest guest 登入測試

file

這個意思是我們只能透過本地來登入guest 賬戶

下面給出解決方案

新增賬戶

# 新增一個使用者
rabbitmqctl add_user admin admin
# 將使用者設定為admin許可權
rabbitmqctl set_user_tags admin administrator

file

再次測試訪問

file

訪問成功,手動安裝成功!

六、Linux環境下Docker安裝RabbitMQ

安裝Docker

先檢視本機是否存在Docker,刪除舊版本Docker

檢視docker 版本

docker version

file

沒有docker,我們執行以下命令,刪除殘餘檔案

yum remove docker \
               docker-client \
               docker-client-latest \
               docker-common \
               docker-latest \
               docker-latest-logrotate \
               docker-logrotate \
               docker-engine

進入Linux根目錄,安裝Docker

# 安裝yum-utils包(提供yum-config-manager 實用程式)並設定穩定的儲存庫。
yum install -y yum-utils
# 安裝阿里雲配置
yum-config-manager \
     --add-repo \
     

安裝Docker 最新引擎

yum install docker-ce docker-ce-cli containerd.io

file

輸入y確認即可!

配置阿里雲加速映象

開啟阿里雲控制檯,彈性計算 --> 容器與映象服務

file

開啟之後選擇 映象工具 --> 映象加速器,複製內容即可

file

進入Linux伺服器根據步驟配置映象加速器

# 建立docker資料夾
sudo mkdir -p /etc/docker
# 開啟檔案並配置內容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["]
}
EOF
# 重啟服務
sudo systemctl daemon-reload
# 啟動docker
sudo systemctl restart docker

新建資料夾

file

配置內容,並重啟服務

file

根據步驟一步步建立即可!

安裝並啟動RabbitMQ

# 獲取映象,這個是帶著web頁面的
docker pull rabbitmq:management
# 執行 rabbitmq 並對映埠 設定預設賬戶密碼admin
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

file

測試RabbitMQ

瀏覽器輸入 http://您的ip地址:15672 並輸入admin admin

出現如下介面

file

至此,在Docker內安裝RabbitMQ完成!

本文轉自:https://blog.csdn.net/weixin_45526437/article/details/124797746


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2902374/,如需轉載,請註明出處,否則將追究法律責任。

相關文章