一裸燎、安裝
RabbitMQ的安裝有多種安裝方式,安裝的難易程度也不相同泼疑,主要的安裝方式有如下幾種:
- 通過Docker鏡像安裝
- 通過可執(zhí)行文件安裝
- 購買云服務(wù)上的RabbitMQ服務(wù)
根據(jù)使用場景和目的的不同德绿,選擇的依據(jù)如下:
- 如果是出于個人學(xué)習(xí)和測試的目的,推薦使用Docker鏡像的安裝方式,簡單快捷移稳,分分鐘搞定蕴纳。
- 如果是生產(chǎn)環(huán)境使用的話,出于安全个粱、穩(wěn)定性古毛、可運維的角度考慮,推薦購買阿里云云服務(wù)商提供的消息隊列RabbitMQ版都许。
1.1 Docker鏡像方式安裝
1稻薇、獲取鏡像
# 指定版本,該版本包含了web控制頁面
$ docker pull rabbitmq:management
2梭稚、運行鏡像
這里推薦采用了第二種啟動方式颖低,可以可以自定義用戶名和密碼,一定程度上增強了訪問的安全性弧烤。
#方式一:默認guest 用戶忱屑,密碼也是 guest
$ docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
#方式二:設(shè)置用戶名和密碼(推薦),示例中用戶名和密碼均為admin
$ docker run -d --hostname my-rabbit --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
說明:
-
-d
后臺運行容器; -
--name
指定容器名暇昂; -
-p
指定服務(wù)運行的端口(5672:應(yīng)用訪問端口莺戒;15672:控制臺Web端口號); -
-v
映射目錄或文件急波; -
--hostname
主機名(RabbitMQ的一個重要注意事項是它根據(jù)所謂的 “節(jié)點名稱” 存儲數(shù)據(jù)从铲,默認為主機名); -
-e
指定環(huán)境變量澄暮;(RABBITMQ_DEFAULT_VHOST:默認虛擬機名名段;RABBITMQ_DEFAULT_USER:默認的用戶名;RABBITMQ_DEFAULT_PASS:默認用戶名的密碼)
1.2 可執(zhí)行文件安裝
這里以centos操作系統(tǒng)下安裝RabbitMQ為例泣懊,其他例如Windows操作系統(tǒng)比較非主流伸辟,就不再介紹了,需要的話可以參考網(wǎng)上的其他資料馍刮。
1.2.1 安裝erlang環(huán)境
由于RabbitMQ是采用erlang需要編寫的信夫,因此需要安裝erlang的運行時環(huán)境,就好比運行java程序需要安裝JVM一樣卡啰。話不多說静稻,開干:
首先在打開/etc/yum.repos.d/rabbitmq-erlang.repo
,注意手動創(chuàng)建rabbitmq-erlang.repo
匈辱。
在rabbitmq-erlang.repo
輸入以下內(nèi)容振湾,保存,然后執(zhí)行yum install erlang
命令亡脸。
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
然后輸入erl
押搪,提示已經(jīng)可以了佛南。
1.2.2 安裝RabbitMQ
打開RabbitMQ下載地址,找到需要下載的版本:
嵌言,根據(jù)系統(tǒng)選擇
按照如下的步驟繼續(xù)操作:
# Step1: 下載rabbitmq的rpm
$ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-3.7.15-1.el7.noarch.rpm
# Step2: 安裝RabbitMQ
$ yum install rabbitmq-server-3.7.15-1.el7.noarch.rpm
# Step3: 完成后啟動服務(wù)
$ service rabbitmq-server start
# Step4: 查看服務(wù)狀態(tài)
$ service rabbitmq-server status
二、常見操作
RabbitMQ提供了通過命令行操作和頁面操作兩種便捷的管理隊列服務(wù)的方式及穗,下面分別予以介紹摧茴。
2.1 命令行操作
服務(wù)啟動和停止
- 啟動監(jiān)控管理器:rabbitmq-plugins enable rabbitmq_management
- 關(guān)閉監(jiān)控管理器:rabbitmq-plugins disable rabbitmq_management
- 啟動rabbitmq:rabbitmq-service start
- 關(guān)閉rabbitmq:rabbitmq-service stop
查詢隊列
- 查看所有的隊列:rabbitmqctl list_queues
- 清除所有的隊列:rabbitmqctl reset
關(guān)閉應(yīng)用:rabbitmqctl stop_app
啟動應(yīng)用:rabbitmqctl start_app
用戶和權(quán)限設(shè)置
- 添加用戶:rabbitmqctl add_user username password
- 分配角色:rabbitmqctl set_user_tags username administrator
- 新增虛擬主機:rabbitmqctl add_vhost vhost_name
- 將新虛擬主機授權(quán)給新用戶:rabbitmqctl set_permissions -p vhost_name username '.' '.' '.*'
2.2 頁面操作
2.3.1 管理控制臺登錄
在本地的瀏覽器中輸入并訪問如下的地址:http://localhost:15672/
在登錄頁輸入先前設(shè)置的用戶名和密碼:admin/admin
登錄之后,是可以看到一個簡單后臺管理界面的埂陆。在這個界面里面我們可以做些什么苛白?
可以手動創(chuàng)建虛擬host,創(chuàng)建用戶焚虱,分配權(quán)限购裙,創(chuàng)建交換機,創(chuàng)建隊列等等鹃栽,還有查看隊列消息躏率,消費效率,推送效率等等民鼓。
2.3.2 隊列創(chuàng)建與綁定
下面我們以一個實際的案例來介紹RabiitMQ管理控制臺的使用:
假設(shè)我們需要創(chuàng)建一個名為“test-queue”的隊列queue薇芝,創(chuàng)建一個名為“test-exchange”的交換器exchange,同時設(shè)置二者之間的綁定關(guān)系為direct
直連模式:
切換到【Queues】Tab頁丰嘉,找到【Add a new queue】夯到,Name一欄填寫【test-queue】表示一個測試隊列名,其他采用默認設(shè)置饮亏,輸入完成后點擊【Add queue】按鈕耍贾,此時在【All queues】列表中將展示剛才新增的隊列【test-queue】。
切換到【Exchanges】Tab頁路幸,找到【Add a new exchange】,Name一欄輸入【test-exchange】表示一個測試的交換器荐开,其他采用默認設(shè)置,輸入完成后點擊【Add queue】按鈕劝赔,此時在【All exchanges】列表中將展示剛才新增的交換器【test-exchange】誓焦。
點擊新增的【test-exchange】,找到【Bindings】,點擊下拉小三角着帽,找到【Add bingding from this exchange】,模式選擇默認的【To queue】,這樣后面的輸入框輸入的就是隊列名杂伟,這里我們輸入先前創(chuàng)建好的隊列【test-queue】,設(shè)置路由鍵Routing key為red。
添加完成之后仍翰,在【Bingdings】欄目下會展示已經(jīng)添加的綁定關(guān)系列表赫粥,圖中表示的含義為當前的exchange到隊列test-queue的routing key是red,后面的【Unbind】按鈕是解除當前的Exchange與test-queue的綁定關(guān)系予借。
2.3.3 測試消息發(fā)送
接下來我們測試一下消息發(fā)送越平。還在當前頁面频蛔,找到【Publish messages】,點擊小三角按鈕,展開后秦叛,填寫Routing key【blue】晦溪,payload填寫【wrong message】,填寫完成之后點擊【Publish message】按鈕挣跋,由于沒有路由鍵三圆,提示消息發(fā)布成功,但是沒有被路由避咆。
接著我們再次填寫Routing key【red】舟肉,payload填寫【right message】,填寫完成之后點擊【Publish message】按鈕查库,提示消息發(fā)送成功路媚。
再次切換到【Queue】Tab頁,在【All queue】中展示了所有隊列的列表樊销,點擊我們創(chuàng)建的隊列【test-queue】整慎。
沒有消費者
從queue的視角展現(xiàn)了與交換器【test-exchange】的綁定關(guān)系。
點擊【Get messages】的小三角围苫,修改Messages后的輸入框中的數(shù)字為3院领,它表示獲取未被消息的消息,從最早的一條消息開始展示够吩。
我們發(fā)送的測試消息比較多比然,這個的第三條消息才是我們最新發(fā)送的那一條。
三周循、小結(jié)
本文主要介紹了RabbitMQ的幾種常見安裝方式强法、常見的操作控制指令。
RabbitMQ官方提供了一個可視化的管理控制臺湾笛,上去體驗一下操作饮怯,也能夠加深我們對于RabbitMQ中消息的發(fā)送、接收嚎研、Queue蓖墅、Exchange的理解,更深一層的用意在于临扮,當線上環(huán)境出現(xiàn)問題的時候论矾,我們可以通過管理控制臺方便的查詢隊列、交換器以及二者之間的綁定關(guān)系是否有問題杆勇,同時可以觀測隊列中消息收發(fā)的情況贪壳,是監(jiān)控運維的一把利器。