RabbitMQ~開篇(pian)與環境部署
想寫這(zhe)篇文章很(hen)久(jiu)了,今(jin)天(tian)終于有時(shi)間總結一下,一個大型的(de)系(xi)統里,消息中(zhong)間件是必不可(ke)少的(de),它將(jiang)并發(fa)環(huan)境處理(li)(li)的(de)數據(ju)異(yi)步進行處理(li)(li),有效的(de)提(ti)高了系(xi)統的(de)并發(fa)能力,有很(hen)多系(xi)統的(de)瓶頸(jing)點都(dou)在(zai)于此(ci),而消息中(zhong)間件在(zai)這(zhe)個時(shi)候(hou)就(jiu)(jiu)要登場了,它解決的(de)問題也就(jiu)(jiu)是高并發(fa)的(de)處理(li)(li),將(jiang)同(tong)步的(de)阻(zu)塞變(bian)成異(yi)步的(de)處理(li)(li)!
我們工作中經常使用(yong)到(dao)的消息組件有:RabbitMQ,Equeue,ActiveMQ,Kafka等,最近(jin)大叔(shu)自己(ji)也寫了一套,取名為LindMQ,各位有時間可以多關注!
下面我們以RabbitMQ來說說它(ta)的安裝與部署:
1 Erlang
是(shi)一種(zhong)通用的面向的編(bian)程語言,它由電信設備制造商(shang)愛立信所(suo)轄(xia)的CS-Lab開發,目的是(shi)創造一種(zhong)可以(yi)應對大規模并發活動的編(bian)程語言和運行(xing)環境(jing).
(101028910)
(101028910)
(101891457)
(34761971)
(1409661)
2 RabbitMQServer
是(shi)一(yi)種應用(yong)(yong)程(cheng)(cheng)(cheng)序(xu)(xu)對(dui)應用(yong)(yong)程(cheng)(cheng)(cheng)序(xu)(xu)的(de)(de)(de)(de)通(tong)(tong)(tong)(tong)信(xin)方(fang)法。應用(yong)(yong)程(cheng)(cheng)(cheng)序(xu)(xu)通(tong)(tong)(tong)(tong)過讀寫出(chu)入(ru)隊列的(de)(de)(de)(de)消(xiao)(xiao)息(xi)(針對(dui)應用(yong)(yong)程(cheng)(cheng)(cheng)序(xu)(xu)的(de)(de)(de)(de)數據)來(lai)通(tong)(tong)(tong)(tong)信(xin),而(er)(er)無(wu)需(xu)專用(yong)(yong)連(lian)接(jie)(jie)來(lai)鏈接(jie)(jie)它們(men)。消(xiao)(xiao)息(xi)傳遞指的(de)(de)(de)(de)是(shi)程(cheng)(cheng)(cheng)序(xu)(xu)之間通(tong)(tong)(tong)(tong)過在消(xiao)(xiao)息(xi)中發(fa)送(song)數據進(jin)行通(tong)(tong)(tong)(tong)信(xin),而(er)(er)不是(shi)通(tong)(tong)(tong)(tong)過直(zhi)接(jie)(jie)調(diao)用(yong)(yong)彼(bi)此來(lai)通(tong)(tong)(tong)(tong)信(xin),直(zhi)接(jie)(jie)調(diao)用(yong)(yong)通(tong)(tong)(tong)(tong)常是(shi)用(yong)(yong)于諸如的(de)(de)(de)(de)技術。排隊指的(de)(de)(de)(de)是(shi)應用(yong)(yong)程(cheng)(cheng)(cheng)序(xu)(xu)通(tong)(tong)(tong)(tong)過 隊列來(lai)通(tong)(tong)(tong)(tong)信(xin)。隊列的(de)(de)(de)(de)使用(yong)(yong)除去了接(jie)(jie)收和發(fa)送(song)應用(yong)(yong)程(cheng)(cheng)(cheng)序(xu)(xu)同時(shi)執行的(de)(de)(de)(de)要(yao)求.
3 安裝(zhuang)完成后(hou),開啟rabbitMQ的(de)服務,然(ran)后(hou)它會去監聽一些(xie)端口,用來(lai)進行數據通(tong)訊
-
端口4369 (epmd), 25672 (Erlang distribution)
-
Epmd是Erlang Port Mapper Daemon的縮寫,在Erlang集群中的感化相當于dns的作用,供(gong)給節(jie)點名稱到端口(kou)的查(cha)詢(xun)辦事,epmd綁定(ding)在總所(suo)周(zhou)知的4369端口(kou)上。
-
端口5672, 5671 (AMQP 0-9-1 without and with TLS)
-
AMQP,即Advanced Message Queuing Protocol,一個提(ti)供統(tong)一消(xiao)(xiao)息服務的應用層標準(zhun)高(gao)級隊列(lie)協議,是協議的一個開(kai)放標準(zhun),為面向消(xiao)(xiao)息的中間件設計(ji)。基于(yu)此協議的客戶(hu)端與消(xiao)(xiao)息中間件可(ke)傳遞消(xiao)(xiao)息,并不受客戶(hu)端/不同產品,不同的開(kai)發語言(yan)等(deng)條件的限制(zhi)。中的實現(xian)有 等(deng)。
-
端口15672 (if management plugin is enabled)
-
通過//serverip:15672訪問RabbitMQ的(de)Web管理界面(mian),默認用戶名密碼(ma)都是(shi)guest。(注(zhu)意(yi):RabbitMQ 3.0之前的(de)版本默認端口是(shi)55672,下同)
-
端口61613, 61614 (if STOMP is enabled)
-
Stomp是(shi)一個簡(jian)單的(de)消息文(wen)(wen)本協(xie)議,它的(de)設計核心理念就是(shi)簡(jian)單與可用性,官方文(wen)(wen)檔:
現在(zai)我們就來(lai)實(shi)踐一下Stomp協議,你需要的是:
1.一個(ge)支持stomp消(xiao)息協議的(de)messaging server(譬如activemq,rabbitmq);
2.一個終端(duan)(譬如linux shell);
3.一些基本命令與操作(譬如(ru)nc,telnet)
-
端口1883, 8883 (if MQTT is enabled)
MQTT只是IBM推出的一個(ge)消(xiao)息(xi)(xi)協議,基于的。兩個(ge)App端發(fa)送(song)和接收(shou)消(xiao)息(xi)(xi)需要(yao)中間人(ren)(ren),這個(ge)中間人(ren)(ren)就是消(xiao)息(xi)(xi)服(fu)務器(比如ActiveMQ/RabbitMQ),三者通(tong)信協議就是MQTT
好(hao)了,介紹了這些(xie)多,相(xiang)信大家(jia)也是(shi)心里癢癢了,下(xia)一講,咱(zan)們開始寫RabbitMQ的(de)demo了,敬請(qing)期待!