您好,登錄后才能下訂單哦!
這篇文章主要介紹“AMQP是什么”,在日常操作中,相信很多人在AMQP是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”AMQP是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
Message Queue的需求由來(lái)已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的產(chǎn)品,當(dāng)時(shí)的Message queuing軟件叫做:the information bus(TIB)。 TIB被電信和通訊公司采用,路透社收購(gòu)了Teknekron公司。之后,IBM開(kāi)發(fā)了MQSeries,微軟開(kāi)發(fā)了Microsoft Message Queue(MSMQ)。這些商業(yè)MQ供應(yīng)商的問(wèn)題是廠商鎖定,價(jià)格高昂。2001年,Java Message queuing試圖解決鎖定和交互性的問(wèn)題,但對(duì)應(yīng)用來(lái)說(shuō)反而更加麻煩了。
于是2004年,摩根大通和iMatrix開(kāi)始著手Advanced Message Queuing Protocol (AMQP)開(kāi)放標(biāo)準(zhǔn)的開(kāi)發(fā)。2006年,AMQP規(guī)范發(fā)布。2007年,Rabbit技術(shù)公司基于AMQP標(biāo)準(zhǔn)開(kāi)發(fā)的RabbitMQ 1.0 發(fā)布。
AMQP基本模型如下圖所示:
接收和分發(fā)消息的應(yīng)用,如RabbitMQ Server就是Message Broker。
出于多租戶和安全因素設(shè)計(jì)的,把AMQP的基本組件劃分到一個(gè)虛擬的分組中,類似于網(wǎng)絡(luò)中的namespace概念。
交換器是消息送達(dá)的實(shí)體。他是具名的,它是消息的第一站。系統(tǒng)根據(jù)分發(fā)規(guī)則,匹配查詢表中的routing key,分發(fā)消息到queue中去。
durable:該交換器將在broker重啟后生效。
auto-delete:該交換器將在沒(méi)有消息隊(duì)列綁定時(shí)自動(dòng)刪除。一個(gè)從未綁定任何隊(duì)列的交換器不會(huì)自動(dòng)刪除。
direct (point-to-point)
fanout (multicast)
topic (publish-subscribe)
隊(duì)列是接收消息的實(shí)體,具有名字和屬性,但沒(méi)有類型??蛻舳丝梢杂嗛嗞?duì)列以便使broker遞送某消息隊(duì)列的內(nèi)容到該客戶端。
alternate-exchange :當(dāng)消息被訂閱者拒絕或者由于隊(duì)列被刪除而孤立時(shí)則被送往此交換器,同時(shí)隊(duì)列中的該消息被刪除。
passive :當(dāng)隊(duì)列不存在時(shí)會(huì)拋出一個(gè)錯(cuò)誤信息,仍然不會(huì)被聲明。
durable :隊(duì)列將在broker重啟時(shí)啟動(dòng)。
exclusive :隊(duì)列僅服務(wù)于一個(gè)客戶端。
auto-delete :隊(duì)列在沒(méi)有活躍訂閱者的時(shí)候?qū)⒆詣?dòng)刪除。當(dāng)客戶端終結(jié)時(shí),exclusive類型的隊(duì)列則一定會(huì)自動(dòng)刪除。
綁定是隊(duì)列和交換器之間的關(guān)系,規(guī)定消息如何由交換器到隊(duì)列。綁定的屬性被交換器用來(lái)與路由算法匹配。
當(dāng)一個(gè)消息的路由關(guān)鍵字與綁定中的模式匹配時(shí),交換器會(huì)把該消息的拷貝送達(dá)隊(duì)列。如何進(jìn)行匹配僅依賴于交換器的類型:
direct型 :消息的路由關(guān)鍵字與綁定相同。
fanout型 :總是匹配,即使綁定無(wú)關(guān)鍵字。
topic型 :匹配路由關(guān)鍵字屬性,字符串的各個(gè)部分以'.'分隔??砂瑑蓚€(gè)特殊字符:'*'表示單個(gè)任意詞,'#'表示0個(gè)或多個(gè)詞,例如 *.stock.# 匹配usd.stock和eur.stock.db,但不匹配stock.nasdaq。
headers型 :匹配各個(gè)鍵-值對(duì)的邏輯組合結(jié)果。
publisher/consumer和broker之間的TCP連接。斷開(kāi)連接的操作只會(huì)在client端進(jìn)行,Broker不會(huì)斷開(kāi)連接,除非出現(xiàn)網(wǎng)絡(luò)故障或broker服務(wù)出現(xiàn)問(wèn)題。
如果每一次訪問(wèn)RabbitMQ都建立一個(gè)Connection,在消息量大的時(shí)候建立TCP Connection的開(kāi)銷(xiāo)將是巨大的,效率也較低。
Channel是在connection內(nèi)部建立的邏輯連接,如果應(yīng)用程序支持多線程,通常每個(gè)thread創(chuàng)建單獨(dú)的channel進(jìn)行通訊,AMQP method包含了channel id幫助客戶端和message broker識(shí)別channel,所以channel之間是完全隔離的。Channel作為輕量級(jí)的Connection極大減少了操作系統(tǒng)建立TCP connection的開(kāi)銷(xiāo)。
到此,關(guān)于“AMQP是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。