溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

RabbitMQ的原理和作用是什么

發(fā)布時(shí)間:2021-06-25 14:31:18 來源:億速云 閱讀:459 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“RabbitMQ的原理和作用是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1、主流消息中間件介紹

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ì)性能和吞吐量要求還在其次.

2、RabbitMQ高性能的原因

1) Erlang語言最初基于交換機(jī)領(lǐng)域的架構(gòu)模式,使得RabbitMQ在broker之間進(jìn)行數(shù)據(jù)交互的性能是非常優(yōu)秀的
2) Erlang的優(yōu)點(diǎn):Erlang有著和原生Socket一樣的延遲

3、什么是AMQP高級(jí)消息隊(duì)列協(xié)議

  它是一個(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ī)范.

RabbitMQ的原理和作用是什么

4、AMQP核心概念

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)者

5、RabbitMQ整體架構(gòu)

RabbitMQ的原理和作用是什么

RabbitMQ的原理和作用是什么

生產(chǎn)者發(fā)送MQ消息時(shí)要帶上兩個(gè)關(guān)鍵參數(shù):
1) 指定發(fā)送到哪個(gè)Exchange
2) 指定Routing Key,通過Exchange和Message Queue建立一個(gè)綁定關(guān)系,路由到指定Message Queue

6、Exchange交換機(jī)

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ā)消息是最快的

RabbitMQ的原理和作用是什么

RabbitMQ的原理和作用是什么

7、綁定、隊(duì)列、消息、虛擬主機(jī)詳解

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í)用文章!

向AI問一下細(xì)節(jié)

免責(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)容。

AI