消息隊列-RabbitMQ-安裝和基本操作

一裸燎、安裝

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下載地址,找到需要下載的版本:

image.png

嵌言,根據(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

image.png

登錄之后,是可以看到一個簡單后臺管理界面的埂陆。在這個界面里面我們可以做些什么苛白?

可以手動創(chuàng)建虛擬host,創(chuàng)建用戶焚虱,分配權(quán)限购裙,創(chuàng)建交換機,創(chuàng)建隊列等等鹃栽,還有查看隊列消息躏率,消費效率,推送效率等等民鼓。

image.png

2.3.2 隊列創(chuàng)建與綁定

下面我們以一個實際的案例來介紹RabiitMQ管理控制臺的使用:

假設(shè)我們需要創(chuàng)建一個名為“test-queue”的隊列queue薇芝,創(chuàng)建一個名為“test-exchange”的交換器exchange,同時設(shè)置二者之間的綁定關(guān)系為direct直連模式:

image.png

切換到【Queues】Tab頁丰嘉,找到【Add a new queue】夯到,Name一欄填寫【test-queue】表示一個測試隊列名,其他采用默認設(shè)置饮亏,輸入完成后點擊【Add queue】按鈕耍贾,此時在【All queues】列表中將展示剛才新增的隊列【test-queue】。

image.png

切換到【Exchanges】Tab頁路幸,找到【Add a new exchange】,Name一欄輸入【test-exchange】表示一個測試的交換器荐开,其他采用默認設(shè)置,輸入完成后點擊【Add queue】按鈕劝赔,此時在【All exchanges】列表中將展示剛才新增的交換器【test-exchange】誓焦。

image.png

點擊新增的【test-exchange】,找到【Bindings】,點擊下拉小三角着帽,找到【Add bingding from this exchange】,模式選擇默認的【To queue】,這樣后面的輸入框輸入的就是隊列名杂伟,這里我們輸入先前創(chuàng)建好的隊列【test-queue】,設(shè)置路由鍵Routing key為red。

image.png

添加完成之后仍翰,在【Bingdings】欄目下會展示已經(jīng)添加的綁定關(guān)系列表赫粥,圖中表示的含義為當前的exchange到隊列test-queue的routing key是red,后面的【Unbind】按鈕是解除當前的Exchange與test-queue的綁定關(guān)系予借。


image.png

2.3.3 測試消息發(fā)送

接下來我們測試一下消息發(fā)送越平。還在當前頁面频蛔,找到【Publish messages】,點擊小三角按鈕,展開后秦叛,填寫Routing key【blue】晦溪,payload填寫【wrong message】,填寫完成之后點擊【Publish message】按鈕挣跋,由于沒有路由鍵三圆,提示消息發(fā)布成功,但是沒有被路由避咆。

image.png

接著我們再次填寫Routing key【red】舟肉,payload填寫【right message】,填寫完成之后點擊【Publish message】按鈕查库,提示消息發(fā)送成功路媚。

image.png

再次切換到【Queue】Tab頁,在【All queue】中展示了所有隊列的列表樊销,點擊我們創(chuàng)建的隊列【test-queue】整慎。

image.png

沒有消費者

image.png

從queue的視角展現(xiàn)了與交換器【test-exchange】的綁定關(guān)系。

image.png

點擊【Get messages】的小三角围苫,修改Messages后的輸入框中的數(shù)字為3院领,它表示獲取未被消息的消息,從最早的一條消息開始展示够吩。

image.png

我們發(fā)送的測試消息比較多比然,這個的第三條消息才是我們最新發(fā)送的那一條。

image.png

三周循、小結(jié)

本文主要介紹了RabbitMQ的幾種常見安裝方式强法、常見的操作控制指令。

RabbitMQ官方提供了一個可視化的管理控制臺湾笛,上去體驗一下操作饮怯,也能夠加深我們對于RabbitMQ中消息的發(fā)送、接收嚎研、Queue蓖墅、Exchange的理解,更深一層的用意在于临扮,當線上環(huán)境出現(xiàn)問題的時候论矾,我們可以通過管理控制臺方便的查詢隊列、交換器以及二者之間的綁定關(guān)系是否有問題杆勇,同時可以觀測隊列中消息收發(fā)的情況贪壳,是監(jiān)控運維的一把利器。

四蚜退、參考資料

  1. 5分鐘入門RabbitMQ
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闰靴,一起剝皮案震驚了整個濱河市彪笼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蚂且,老刑警劉巖配猫,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杏死,居然都是意外死亡章姓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門识埋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人零渐,你說我怎么就攤上這事窒舟。” “怎么了诵盼?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵惠豺,是天一觀的道長。 經(jīng)常有香客問我风宁,道長洁墙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任戒财,我火速辦了婚禮热监,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饮寞。我一直安慰自己孝扛,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布幽崩。 她就那樣靜靜地躺著苦始,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慌申。 梳的紋絲不亂的頭發(fā)上陌选,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音蹄溉,去河邊找鬼咨油。 笑死,一個胖子當著我的面吹牛柒爵,可吹牛的內(nèi)容都是我干的臼勉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼餐弱,長吁一口氣:“原來是場噩夢啊……” “哼宴霸!你這毒婦竟也來了囱晴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤瓢谢,失蹤者是張志新(化名)和其女友劉穎畸写,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氓扛,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡枯芬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了采郎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片千所。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蒜埋,靈堂內(nèi)的尸體忽然破棺而出淫痰,到底是詐尸還是另有隱情,我是刑警寧澤整份,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布待错,位于F島的核電站,受9級特大地震影響烈评,放射性物質(zhì)發(fā)生泄漏火俄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一讲冠、第九天 我趴在偏房一處隱蔽的房頂上張望瓜客。 院中可真熱鬧,春花似錦竿开、人聲如沸忆家。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芽卿。三九已至,卻和暖如春胳搞,著一層夾襖步出監(jiān)牢的瞬間卸例,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工肌毅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留筷转,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓悬而,卻偏偏與公主長得像呜舒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子笨奠,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容