資料介紹
1. 消息隊(duì)列的歷史
了解一件事情的來龍去脈,將不會對它感到神秘。讓我們來看看消息隊(duì)列(Message Queue)這項(xiàng)技術(shù)的發(fā)展歷史。
Message Queue的需求由來已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的產(chǎn)品,當(dāng)時(shí)的Message queuing軟件叫做:the information bus(TIB)。 TIB被電信和通訊公司采用,路透社收購了Teknekron公司。之后,IBM開發(fā)了MQSeries,微軟開發(fā)了Microsoft Message Queue(MSMQ)。這些商業(yè)MQ供應(yīng)商的問題是廠商鎖定,價(jià)格高昂。2001年,Java Message queuing試圖解決鎖定和交互性的問題,但對應(yīng)用來說反而更加麻煩了。
于是2004年,摩根大通和iMatrix開始著手Advanced Message Queuing Protocol (AMQP)開放標(biāo)準(zhǔn)的開發(fā)。2006年,AMQP規(guī)范發(fā)布。2007年,Rabbit技術(shù)公司基于AMQP標(biāo)準(zhǔn)開發(fā)的RabbitMQ 1.0 發(fā)布。
目前RabbitMQ的最新版本為3.5.7,基于AMQP 0-9-1。

RabbitMQ采用Erlang語言開發(fā)。Erlang語言由Ericson設(shè)計(jì),專門為開發(fā)concurrent和distribution系統(tǒng)的一種語言,在電信領(lǐng)域使用廣泛。OTP(Open Telecom Platform)作為Erlang語言的一部分,包含了很多基于Erlang開發(fā)的中間件/庫/工具,如mnesia/SASL,極大方便了Erlang應(yīng)用的開發(fā)。OTP就類似于Python語言中眾多的module,用戶借助這些module可以很方便的開發(fā)應(yīng)用。
2. AMQP messaging 中的基本概念

Broker: 接收和分發(fā)消息的應(yīng)用,RabbitMQ Server就是Message Broker。
Virtual host: 出于多租戶和安全因素設(shè)計(jì)的,把AMQP的基本組件劃分到一個(gè)虛擬的分組中,類似于網(wǎng)絡(luò)中的namespace概念。當(dāng)多個(gè)不同的用戶使用同一個(gè)RabbitMQ server提供的服務(wù)時(shí),可以劃分出多個(gè)vhost,每個(gè)用戶在自己的vhost創(chuàng)建exchange/queue等。
Connection: publisher/consumer和broker之間的TCP連接。斷開連接的操作只會在client端進(jìn)行,Broker不會斷開連接,除非出現(xiàn)網(wǎng)絡(luò)故障或broker服務(wù)出現(xiàn)問題。
Channel: 如果每一次訪問RabbitMQ都建立一個(gè)Connection,在消息量大的時(shí)候建立TCP Connection的開銷將是巨大的,效率也較低。Channel是在connection內(nèi)部建立的邏輯連接,如果應(yīng)用程序支持多線程,通常每個(gè)thread創(chuàng)建單獨(dú)的channel進(jìn)行通訊,AMQP method包含了channel id幫助客戶端和message broker識別channel,所以channel之間是完全隔離的。Channel作為輕量級的Connection極大減少了操作系統(tǒng)建立TCP connection的開銷。
Exchange: message到達(dá)broker的第一站,根據(jù)分發(fā)規(guī)則,匹配查詢表中的routing key,分發(fā)消息到queue中去。常用的類型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)。
Queue: 消息最終被送到這里等待consumer取走。一個(gè)message可以被同時(shí)拷貝到多個(gè)queue中。
Binding: exchange和queue之間的虛擬連接,binding中可以包含routing key。Binding信息被保存到exchange中的查詢表中,用于message的分發(fā)依據(jù)。
3. 典型的“生產(chǎn)/消費(fèi)”消息模型
了解一件事情的來龍去脈,將不會對它感到神秘。讓我們來看看消息隊(duì)列(Message Queue)這項(xiàng)技術(shù)的發(fā)展歷史。
Message Queue的需求由來已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的產(chǎn)品,當(dāng)時(shí)的Message queuing軟件叫做:the information bus(TIB)。 TIB被電信和通訊公司采用,路透社收購了Teknekron公司。之后,IBM開發(fā)了MQSeries,微軟開發(fā)了Microsoft Message Queue(MSMQ)。這些商業(yè)MQ供應(yīng)商的問題是廠商鎖定,價(jià)格高昂。2001年,Java Message queuing試圖解決鎖定和交互性的問題,但對應(yīng)用來說反而更加麻煩了。
于是2004年,摩根大通和iMatrix開始著手Advanced Message Queuing Protocol (AMQP)開放標(biāo)準(zhǔn)的開發(fā)。2006年,AMQP規(guī)范發(fā)布。2007年,Rabbit技術(shù)公司基于AMQP標(biāo)準(zhǔn)開發(fā)的RabbitMQ 1.0 發(fā)布。
目前RabbitMQ的最新版本為3.5.7,基于AMQP 0-9-1。

RabbitMQ采用Erlang語言開發(fā)。Erlang語言由Ericson設(shè)計(jì),專門為開發(fā)concurrent和distribution系統(tǒng)的一種語言,在電信領(lǐng)域使用廣泛。OTP(Open Telecom Platform)作為Erlang語言的一部分,包含了很多基于Erlang開發(fā)的中間件/庫/工具,如mnesia/SASL,極大方便了Erlang應(yīng)用的開發(fā)。OTP就類似于Python語言中眾多的module,用戶借助這些module可以很方便的開發(fā)應(yīng)用。
2. AMQP messaging 中的基本概念

Broker: 接收和分發(fā)消息的應(yīng)用,RabbitMQ Server就是Message Broker。
Virtual host: 出于多租戶和安全因素設(shè)計(jì)的,把AMQP的基本組件劃分到一個(gè)虛擬的分組中,類似于網(wǎng)絡(luò)中的namespace概念。當(dāng)多個(gè)不同的用戶使用同一個(gè)RabbitMQ server提供的服務(wù)時(shí),可以劃分出多個(gè)vhost,每個(gè)用戶在自己的vhost創(chuàng)建exchange/queue等。
Connection: publisher/consumer和broker之間的TCP連接。斷開連接的操作只會在client端進(jìn)行,Broker不會斷開連接,除非出現(xiàn)網(wǎng)絡(luò)故障或broker服務(wù)出現(xiàn)問題。
Channel: 如果每一次訪問RabbitMQ都建立一個(gè)Connection,在消息量大的時(shí)候建立TCP Connection的開銷將是巨大的,效率也較低。Channel是在connection內(nèi)部建立的邏輯連接,如果應(yīng)用程序支持多線程,通常每個(gè)thread創(chuàng)建單獨(dú)的channel進(jìn)行通訊,AMQP method包含了channel id幫助客戶端和message broker識別channel,所以channel之間是完全隔離的。Channel作為輕量級的Connection極大減少了操作系統(tǒng)建立TCP connection的開銷。
Exchange: message到達(dá)broker的第一站,根據(jù)分發(fā)規(guī)則,匹配查詢表中的routing key,分發(fā)消息到queue中去。常用的類型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)。
Queue: 消息最終被送到這里等待consumer取走。一個(gè)message可以被同時(shí)拷貝到多個(gè)queue中。
Binding: exchange和queue之間的虛擬連接,binding中可以包含routing key。Binding信息被保存到exchange中的查詢表中,用于message的分發(fā)依據(jù)。
3. 典型的“生產(chǎn)/消費(fèi)”消息模型
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- RabbitMQ:消息傳遞的中介
- RabbitMQ-CN RabbitMQ中文文檔
- LLC拓?fù)?b class="flag-6" style="color: red">詳細(xì)解析資料下載 84次下載
- EDID詳細(xì)解析資料匯總 23次下載
- 汽車常用ISO15765協(xié)議解析 34次下載
- STM32 解析futaba S-bus協(xié)議資料下載
- 網(wǎng)絡(luò)存儲技術(shù)的存儲協(xié)議詳細(xì)說明 15次下載
- 51單片機(jī)點(diǎn)陣代碼和詳細(xì)解析資料免費(fèi)下載
- 如何深度解析C++拷貝構(gòu)造函數(shù)詳細(xì)資料說明
- LTE終端測試規(guī)范36.521測試項(xiàng)的詳細(xì)資料解析 73次下載
- 物聯(lián)網(wǎng)教程之ZStack無線協(xié)議棧的詳細(xì)資料概述 16次下載
- Modbus串行通信協(xié)議的3個(gè)運(yùn)用的程序 29次下載
- Microchip的TCP和IP協(xié)議棧的詳細(xì)中文資料免費(fèi)下載
- 西門子PPI協(xié)議解析資料下載 46次下載
- 信噪比與噪聲的詳細(xì)解析 12次下載
- 基于Docker Compose部署RabbitMQ的經(jīng)驗(yàn)分享 2010次閱讀
- RabbitMq入門教程 529次閱讀
- eSPI協(xié)議抓包分析 3470次閱讀
- TCP協(xié)議詳細(xì)解析 4461次閱讀
- TCP/IP協(xié)議和OPC協(xié)議的區(qū)別 5437次閱讀
- RabbitMQ是什么 886次閱讀
- RabbitMQ通信模型中的work模型 530次閱讀
- RabbitMQ中的發(fā)布訂閱模型 544次閱讀
- RabbitMQ中的路由模型(direct) 521次閱讀
- ARP協(xié)議原理是什么 2301次閱讀
- 固態(tài)鋰離子電池的詳細(xì)資料解析 8914次閱讀
- ARP是什么意思?ARP是什么協(xié)議?ARP協(xié)議用于什么地方 1.9w次閱讀
- 汽車網(wǎng)絡(luò)LIN總線協(xié)議解析 1.7w次閱讀
- 什么是高頻板?詳細(xì)解析高頻板參數(shù) 3.7w次閱讀
- udp協(xié)議詳細(xì)介紹與qudpsocket編程 9327次閱讀
下載排行
本周
- 1DC電源插座圖紙
- 0.67 MB | 2次下載 | 免費(fèi)
- 2AN158 GD32VW553 Wi-Fi開發(fā)指南
- 1.51MB | 2次下載 | 免費(fèi)
- 3AN148 GD32VW553射頻硬件開發(fā)指南
- 2.07MB | 1次下載 | 免費(fèi)
- 4AN111-LTC3219用戶指南
- 84.32KB | 次下載 | 免費(fèi)
- 5AN153-用于電源系統(tǒng)管理的Linduino
- 1.38MB | 次下載 | 免費(fèi)
- 6AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下載 | 免費(fèi)
- 7SM2018E 支持可控硅調(diào)光線性恒流控制芯片
- 402.24 KB | 次下載 | 免費(fèi)
- 8AN-1308: 電流檢測放大器共模階躍響應(yīng)
- 545.42KB | 次下載 | 免費(fèi)
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 450次下載 | 免費(fèi)
- 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 138次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 130次下載 | 免費(fèi)
- 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
- 2.96 MB | 44次下載 | 免費(fèi)
- 53314A函數(shù)發(fā)生器維修手冊
- 16.30 MB | 31次下載 | 免費(fèi)
- 6美的電磁爐維修手冊大全
- 1.56 MB | 24次下載 | 5 積分
- 7如何正確測試電源的紋波
- 0.36 MB | 17次下載 | 免費(fèi)
- 8感應(yīng)筆電路圖
- 0.06 MB | 10次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論