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

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

2017-11-30 07:51:43駱文亮四川職業技術學院
數碼世界 2017年11期
關鍵詞:機制消費者

駱文亮 四川職業技術學院

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

駱文亮 四川職業技術學院

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

RabbitMQ 消息異步處理

1 引言

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

2 RabbitMQ介紹

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

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

3 RabbitMQ分析

3.1 RabbitMQ運行機制

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

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

Client A amp; B:數據的發送方。數據通過交換機(Exchange)路由到相應的隊列(Queue)上。

Client 1,2,3:數據的接收方。當發送方把數據路由到隊列(Queue)上以后,由RabbitMQ服務器把隊列上的數據分發給相應的接收方。

圖3-1 RabbitMQ運行機制

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

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

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

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

3.2 RabbitMQ消息分發機制

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

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

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

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

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

4 結束語

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

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

[2]RabbtMQ官網http://www.rabbitmq.com/

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

[4]魚朝偉詹舒波基于RabbitMQ的異步全雙工消息總線的實現[D]北京郵電大學網絡技術研究院2016.02

猜你喜歡
機制消費者
構建“不敢腐、不能腐、不想腐”機制的思考
系無理取鬧?NO! 請為消費者擦干眼淚
人民交通(2019年16期)2019-12-20 07:03:52
日化品牌怎樣才能吸引年輕消費者?
消費導刊(2018年22期)2018-12-13 09:19:00
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
只用一招 讓喊產品貴的消費者閉嘴
知識付費消費者
定向培養 還需完善安置機制
中國衛生(2016年9期)2016-11-12 13:28:08
悄悄偷走消費者的創意
悄悄偷走消費者的創意
破除舊機制要分步推進
中國衛生(2015年9期)2015-11-10 03:11:12
主站蜘蛛池模板: 97国产成人无码精品久久久| 91精品啪在线观看国产91九色| 操美女免费网站| 欧美另类精品一区二区三区| 91网址在线播放| 欧美中文一区| 亚洲成人黄色在线| 97在线免费视频| 色婷婷国产精品视频| 国产乱人激情H在线观看| 久久亚洲日本不卡一区二区| 亚洲欧美不卡视频| a级毛片网| 国产精品va免费视频| 国产成人精品亚洲77美色| 国内毛片视频| 国产成人精品一区二区三在线观看| 精品国产乱码久久久久久一区二区| 三级毛片在线播放| 久久77777| 日韩精品一区二区三区免费| 综合亚洲网| 欧美亚洲综合免费精品高清在线观看| 国产成人综合久久| 国产二级毛片| 蝴蝶伊人久久中文娱乐网| 自拍中文字幕| 亚洲国产欧美国产综合久久 | 亚洲区视频在线观看| 最新亚洲av女人的天堂| 国产制服丝袜无码视频| 国产成人AV男人的天堂| 日本不卡在线播放| 久久久久青草线综合超碰| 亚洲欧洲日产国码无码av喷潮| 精品色综合| 一本无码在线观看| 欧美一级专区免费大片| 欧美日韩一区二区三| 极品国产一区二区三区| 国产鲁鲁视频在线观看| 国产精鲁鲁网在线视频| 国产精品亚欧美一区二区| 欧美高清视频一区二区三区| 亚洲精品第一在线观看视频| 国产国语一级毛片| 亚洲天堂自拍| 超级碰免费视频91| 久久福利片| 9cao视频精品| 最新国产高清在线| 五月激情婷婷综合| 试看120秒男女啪啪免费| 久久www视频| 欧美精品在线视频观看| 免费国产无遮挡又黄又爽| 欧美日韩精品在线播放| 爱做久久久久久| 欧美日本在线观看| 性视频一区| 久久久波多野结衣av一区二区| 久久国产毛片| 亚洲 欧美 中文 AⅤ在线视频| 国产91透明丝袜美腿在线| 99资源在线| 伊人久久精品无码麻豆精品| 亚洲精品午夜无码电影网| 亚洲二区视频| 四虎国产精品永久一区| 午夜高清国产拍精品| 亚洲欧美成人在线视频| 成人年鲁鲁在线观看视频| 欧美色视频在线| 国产 在线视频无码| 日韩毛片免费视频| 亚洲天堂日韩在线| 欧美三級片黃色三級片黃色1| 日韩欧美中文字幕在线精品| 9999在线视频| 日本一本正道综合久久dvd | 精品人妻无码中字系列| 毛片视频网址|