999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于異步消息處理的RabbitMQ運行原理探討

2017-11-30 07:51:43駱文亮四川職業(yè)技術(shù)學(xué)院
數(shù)碼世界 2017年11期
關(guān)鍵詞:機制消費者

駱文亮 四川職業(yè)技術(shù)學(xué)院

基于異步消息處理的RabbitMQ運行原理探討

駱文亮 四川職業(yè)技術(shù)學(xué)院

對于一個大型的軟件系統(tǒng)來說,不同的模塊分布在不同的服務(wù)器上,模塊之間的通信如果采用傳統(tǒng)的同步消息傳輸機制來傳輸?shù)脑挄?dǎo)致很多問題(如連接的維持、通信的可靠性、消息的過濾等等)。本文主要分析了基于消息異步處理的RabbitMQ的幾種不同的消息分發(fā)機制,并說明了這些方式的主要應(yīng)用場景。

RabbitMQ 消息異步處理

1 引言

在較為大型的商業(yè)軟件開發(fā)中,常常會遇到下面這些問題:①多個模塊間需要通過定時任務(wù)來同步某些數(shù)據(jù);②異構(gòu)系統(tǒng)的不同進程間相互調(diào)用、通訊;③各個系統(tǒng)(模塊)之間的負載均衡;④消息的優(yōu)先級的定義等等問題。本文主要分析了能夠解決以上問題的基于消息的異步處理的一種實現(xiàn)——RabbitMQ的消息分發(fā)機制。

2 RabbitMQ介紹

AMQP,即Advanced Message Queuing Protocol,高級消息隊列協(xié)議,是應(yīng)用層協(xié)議的一個開放標(biāo)準,為面向消息的中間件設(shè)計。消息中間件主要用于組件之間的解耦,消息的發(fā)送者無需知道消息使用者的存在,反之亦然。

RabbitMQ是一個開源的AMQP實現(xiàn),服務(wù)器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴展性、高可用性等方面表現(xiàn)不俗。

3 RabbitMQ分析

3.1 RabbitMQ運行機制

如圖3-1所示,RabbitMQ的運行需要三個“部件”:①RabbitMQ服務(wù)器(RabbitMQ Server);②消息發(fā)送者(ClientA、ClientB);③消息的消費者(Client1、Client2、Client3)。這三者相互合作、缺一不可。下面分別對著三者進行詳細介紹:

RabbitMQ Server:RabbitMQ服務(wù)器,主要功能就是維護一條從“消息發(fā)送者”到“消息消費者”的路線,保證數(shù)據(jù)能夠按照指定的方式進行傳輸。

Client A amp; B:數(shù)據(jù)的發(fā)送方。數(shù)據(jù)通過交換機(Exchange)路由到相應(yīng)的隊列(Queue)上。

Client 1,2,3:數(shù)據(jù)的接收方。當(dāng)發(fā)送方把數(shù)據(jù)路由到隊列(Queue)上以后,由RabbitMQ服務(wù)器把隊列上的數(shù)據(jù)分發(fā)給相應(yīng)的接收方。

圖3-1 RabbitMQ運行機制

在默認情況下,如果消息已經(jīng)被某個“消息消費者”正確的接收到后,那么該消息就會被從隊列中移除。

如果一個隊列沒被任何的“消息消費者”(訂閱),那么如果這個隊列有數(shù)據(jù)到達,那么這個數(shù)據(jù)會被緩存,不會被丟棄。當(dāng)有“消息消費者”時,這個數(shù)據(jù)會被立即發(fā)送給它,這個數(shù)據(jù)接受完成時就會從隊列中刪除。

RabbitMQ采用了“發(fā)送——確認”機制來確保消息能夠正確接收。每個消息都要需要被確認(ack)后才算是正確接收。

如果這個開發(fā)者所開發(fā)的軟件忘記了確認操作(ack),那么RabbitMQ Server不會再發(fā)送數(shù)據(jù)給它,因為Server認為這個Consumer處理能力有限。

3.2 RabbitMQ消息分發(fā)機制

實際上,從圖3-1可以看出,消息發(fā)送者的消息進入了交換機(Exchange)后,RabbitMQ會通過“routing keys”,找到應(yīng)該把這個消息綁定到相應(yīng)的哪個隊列(queue)里。

RabbitMQ在將消息從交換機(Exchange)最終投遞到“消息消費者”去的時候,一共有三種分發(fā)方式:

①Direct exchange:直接匹配模式,如果routing key匹配,那么Message就會被傳遞到相應(yīng)的queue中。其實在queue創(chuàng)建時,它會自動的以queue的名字作為routing key來綁定那個exchange。這種方式主要適合用于有明確訂閱關(guān)系的情況下使用。

②Fanout exchange:廣播方式,這種方式會向所有的隊列發(fā)送消息進行廣播,適用于通知類型的消息發(fā)送。

③Topic exchange:主題式方式,這種方式會以key進行模式匹配,比如通配符?號來發(fā)送消息,如xy?就可以把消息發(fā)送到到所有匹配到xy?的隊列(queue)中去。此模式非常適合于分組發(fā)送消息的場景下所使用。

4 結(jié)束語

在實際的軟件開發(fā)過程中,RabbitMQ在需要處理異步消息的大型應(yīng)用場景中是非常常見的一個解決方案。本文對RabbitMQ進行了介紹、運行機制分析、消息分發(fā)機制分析進行了探討以期為需要使用異步消息處理框架的開發(fā)者提供思路。

[1]anzhsoft.Detailed Introduction詳細介紹[N/OL].http://blog.csdn.net/anzhsoft/article/details/19563091

[2]RabbtMQ官網(wǎng)http://www.rabbitmq.com/

[3]袁佳,郭燕慧基于rabbitmq的海量日志的分布式處理[D].北京郵電大學(xué)計算機學(xué)院2013.07

[4]魚朝偉詹舒波基于RabbitMQ的異步全雙工消息總線的實現(xiàn)[D]北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院2016.02

猜你喜歡
機制消費者
構(gòu)建“不敢腐、不能腐、不想腐”機制的思考
系無理取鬧?NO! 請為消費者擦干眼淚
人民交通(2019年16期)2019-12-20 07:03:52
日化品牌怎樣才能吸引年輕消費者?
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
只用一招 讓喊產(chǎn)品貴的消費者閉嘴
知識付費消費者
定向培養(yǎng) 還需完善安置機制
悄悄偷走消費者的創(chuàng)意
悄悄偷走消費者的創(chuàng)意
破除舊機制要分步推進
主站蜘蛛池模板: 午夜国产不卡在线观看视频| 亚洲性网站| 日韩天堂网| 亚洲精品桃花岛av在线| 高h视频在线| 伊人蕉久影院| 国产成人乱码一区二区三区在线| 亚洲另类第一页| 91丝袜美腿高跟国产极品老师| 在线播放真实国产乱子伦| 中文字幕在线看| 国产自在线播放| 好吊色妇女免费视频免费| 国产无码制服丝袜| 日韩福利在线观看| 久久久久免费精品国产| 日韩精品毛片人妻AV不卡| 91九色国产porny| a在线亚洲男人的天堂试看| 国产经典免费播放视频| 欧美一级黄片一区2区| 青青草原国产一区二区| 亚洲小视频网站| 九九这里只有精品视频| 综合色天天| 欧美日韩亚洲国产主播第一区| 午夜福利网址| 99免费在线观看视频| 人妻无码一区二区视频| 精品成人一区二区| 亚洲欧洲综合| 久久中文无码精品| 青草娱乐极品免费视频| 精品国产自| 麻豆国产原创视频在线播放| AV不卡在线永久免费观看| 无码'专区第一页| 国产九九精品视频| 精品亚洲欧美中文字幕在线看| 久久综合结合久久狠狠狠97色| 久久国产高清视频| 女人爽到高潮免费视频大全| 国产微拍精品| 乱人伦99久久| 丁香婷婷激情综合激情| 亚洲视频免费在线看| 国产欧美在线观看一区| 亚洲高清国产拍精品26u| 亚洲欧美综合另类图片小说区| 久久香蕉国产线看精品| 高清码无在线看| 亚洲色图欧美| 国产精品永久在线| 夜夜高潮夜夜爽国产伦精品| 91久久青青草原精品国产| 欧美成人手机在线视频| 无码视频国产精品一区二区 | 在线观看国产精美视频| 一级看片免费视频| 国产成人一区| 在线观看精品国产入口| 国产h视频在线观看视频| 久久国产精品无码hdav| 日本免费福利视频| 国产午夜看片| 日韩天堂网| 国产AV无码专区亚洲精品网站| 99精品福利视频| 欧美在线导航| 干中文字幕| 午夜日韩久久影院| 久久久久国产一区二区| 国产欧美日韩91| 国产激情无码一区二区APP| 伊人激情久久综合中文字幕| 亚洲欧美另类日本| 国产综合色在线视频播放线视| 精品国产毛片| 国产本道久久一区二区三区| 国产精品成人免费视频99| 亚洲国产无码有码| 久久无码高潮喷水|