您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“RabbitMQ的原理和作用是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
1) ActiveMQ:由Apache出品,完全支持JMS規(guī)范的消息中間件,豐富的API,多種集群構(gòu)建模式,在中小型企業(yè)中應(yīng)用廣泛,面對(duì)超大規(guī)模并發(fā) 性能不是很好. 2) Kafka:開源的分布式發(fā)布-訂閱消息系統(tǒng),基于pull模式來處理消息消費(fèi),追求高吞吐量,一開始目的用于日志收集和傳輸,不支持事務(wù), 對(duì)消息的重復(fù)、丟失、錯(cuò)誤沒有嚴(yán)格要求,適合產(chǎn)生大量數(shù)據(jù)的互聯(lián)網(wǎng)服務(wù)的數(shù)據(jù)收集業(yè)務(wù),強(qiáng)調(diào)高性能. 3) RocketMQ:阿里開源,純Java開發(fā),具有高吞吐量、高可用性、適合大規(guī)模分布式系統(tǒng),其思路起源于Kafka,它對(duì)消息的可靠性傳輸及事 務(wù)性做了優(yōu)化. 4) RabbitMQ:使用Erlang語言開發(fā)的開源消息隊(duì)列系統(tǒng),基于AMQP協(xié)議來實(shí)現(xiàn),AMQP協(xié)議更多應(yīng)用在企業(yè)系統(tǒng)內(nèi),對(duì)數(shù)據(jù)一致性、穩(wěn)定性和 可靠性要求很高的場景,對(duì)性能和吞吐量要求還在其次.
1) Erlang語言最初基于交換機(jī)領(lǐng)域的架構(gòu)模式,使得RabbitMQ在broker之間進(jìn)行數(shù)據(jù)交互的性能是非常優(yōu)秀的 2) Erlang的優(yōu)點(diǎn):Erlang有著和原生Socket一樣的延遲
它是一個(gè)現(xiàn)代特征的二進(jìn)制協(xié)議,是一個(gè)提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn)高級(jí)消息隊(duì)列協(xié)議,是應(yīng)用層協(xié)議的一個(gè)開放標(biāo)準(zhǔn).它就是一個(gè) 規(guī)范.
1) Server:又稱Broker,接受客戶端的連接,實(shí)現(xiàn)AMQP實(shí)體服務(wù) 2) Connection:連接,應(yīng)用程序與Broker的網(wǎng)絡(luò)連接 3) Channel:網(wǎng)絡(luò)信道,幾乎所有的操作都在Channel中進(jìn)行,Channel是進(jìn)行消息讀寫的通道,客戶端可建立多個(gè)Channel,每個(gè)Channel 代表一個(gè)會(huì)話任務(wù). 拿到Connection后會(huì)創(chuàng)建channel 4) Message:消息,由Properties和Body組成,Properties可以對(duì)消息體進(jìn)行修飾,如優(yōu)先級(jí)、延遲等高級(jí)特性,Body是消息內(nèi)容 5) Virtual host:虛擬地址,用于進(jìn)行邏輯隔離,最上層的消息路由. 一個(gè)Virtual Host里面可以有若干個(gè)Exchange和Queue,同一個(gè) Virtual Host里面不能有相同名稱的Exchange和Queue 6) Exchange:交換機(jī),接收消息,根據(jù)路由鍵轉(zhuǎn)發(fā)消息到綁定的隊(duì)列. 生產(chǎn)者將消息投到Exchange上,Exchange進(jìn)行一個(gè)路由發(fā)送到 綁定的Message Queue上 7) binding:Exchange和Queue之間的虛擬連接,binding中可以包含routing key 8) Routing key:一個(gè)路由規(guī)則,虛擬機(jī)可以用它來確定如何路由一個(gè)特定消息 9) Queue:也稱為Message Queue,消息隊(duì)列,保存消息并將它們轉(zhuǎn)發(fā)給消費(fèi)者
生產(chǎn)者發(fā)送MQ消息時(shí)要帶上兩個(gè)關(guān)鍵參數(shù): 1) 指定發(fā)送到哪個(gè)Exchange 2) 指定Routing Key,通過Exchange和Message Queue建立一個(gè)綁定關(guān)系,路由到指定Message Queue
Exchange:接收消息,并根據(jù)路由鍵轉(zhuǎn)發(fā)消息到所綁定的隊(duì)列 交換機(jī)屬性 1) Name:交換機(jī)名稱 2) Type:交換機(jī)類型,有direct、topic、fanout、headers 3) Durability:是否需要持久化 4) Auto Delete:當(dāng)最后一個(gè)綁定到Exchange上的隊(duì)列刪除后,自動(dòng)刪除該Exchange 5) Arguments:擴(kuò)展參數(shù),用于擴(kuò)展AMQP協(xié)議定制化使用 交換機(jī)類型: 1) Direct Exchange:所有發(fā)送到Direct Exchange的消息被轉(zhuǎn)發(fā)到Route Key中指定的Queue 注意:Direct模式可以使用RabbitMQ自帶的Exchange:default Exchange,所以不需要將Exchange進(jìn)行任何綁定操作,消息傳遞時(shí), Route Key必須完全匹配才會(huì)被隊(duì)列接收,否則被丟棄 2) Topic Exchange:所有發(fā)送到Topic Exchange的消息都被轉(zhuǎn)發(fā)到所有關(guān)心Route Key指定Topic的Queue上. Exchange將Route Key和某個(gè)Topic進(jìn)行模糊匹配,隊(duì)列需要綁定一個(gè)Topic. 見下圖Topic Exchange 3) Fanout Exchange:不處理路由鍵,只需要簡單的將隊(duì)列綁定到交換機(jī)上,不用設(shè)置route key.發(fā)送到交換機(jī)的消息的消息都會(huì)被轉(zhuǎn) 發(fā)到與該交換機(jī)綁定的所有隊(duì)列上面,它轉(zhuǎn)發(fā)消息是最快的
1) 綁定 Exchange和Exchange、Queue之間的連接關(guān)系 2) 消息隊(duì)列 Durability,是否持久化 Auto Delete,如選yes,代表當(dāng)最后一個(gè)監(jiān)聽被移除之后,該Queue會(huì)自動(dòng)被刪除 3) Message 服務(wù)器和應(yīng)用程序之間傳遞的數(shù)據(jù) 本質(zhì)上就是一段數(shù)據(jù),由Properties和PayLoad(Body)組成 常用屬性:delivery mode(送達(dá)模式,消息到Broker上是否持久化)、headers(自定義屬性) 4) Virtual Host虛擬主機(jī) 邏輯概念,虛擬地址,用于邏輯隔離,最上層的消息路由 一個(gè)Virtual Host里面可以有若干個(gè)Exchange和Queue 同一個(gè)Virtual Host里面不能有相同名稱的Exchange或Queue
“RabbitMQ的原理和作用是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。