真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MQ全解析

MQ應(yīng)用場景
1. 異步處理
2. 應(yīng)用解耦
3. 流量削峰
秒殺活動,控制參加人數(shù),丟棄超過閾值的請求

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、昆明網(wǎng)站維護(hù)、網(wǎng)站推廣。

RabbitMQ

Broker:消息隊(duì)列服務(wù)器實(shí)體
virtual host:虛擬主機(jī),一個(gè)broker里可以有多個(gè)vhost,用作不同用戶的權(quán)限分離。每一個(gè)vhost本質(zhì)上是一個(gè)mini-rabbitmq server,producer和consumer連接rabbit server需要指定一個(gè)vhost
Channel:消息通道,在客戶端的每個(gè)連接里,可建立多個(gè)channel。創(chuàng)建了客戶端到Broker之間的連接后,客戶端還是不能發(fā)送消息的。需要為每一個(gè)Connection創(chuàng)建Channel,AMQP協(xié)議規(guī)定只有通過Channel才能執(zhí)行AMQP的命令。
Exchange:消息交換機(jī),指定消息路由策略,和Queue一樣,Exchange也可設(shè)置為持久化,臨時(shí)或者自動刪除。Exchange有4種類型:direct(默認(rèn)),fanout,topic和headers:

Direct:直接交換器,工作方式類似于單播,Exchange會將消息發(fā)送完全匹配ROUTING_KEY的Queue fanout:廣播交換器,不管消息的ROUTING_KEY設(shè)置什么,Exchange都會將消息轉(zhuǎn)發(fā)給所有綁定的Queue。 topic:主題交換器,工作方式類似于組播,Exchange會將消息轉(zhuǎn)發(fā)和ROUTING_KEY匹配模式相同的所有隊(duì)列,比如,ROUTING_KEY為user.stock的Message會轉(zhuǎn)發(fā)給綁定匹配模式為 * .stock, user.stock,*.* 和 #.user.stock.# 的隊(duì)列。( * 表是匹配一個(gè)任意詞組,#表示匹配0個(gè)或多個(gè)詞組) headers:不處理routing key,而是根據(jù)發(fā)送的消息內(nèi)容中的headers屬性進(jìn)行匹配

Queue:消息隊(duì)列,提供了FIFO的處理機(jī)制,具有緩存消息的能力。rabbitmq中,隊(duì)列消息可以設(shè)置為持久化,臨時(shí)或者自動刪除。

設(shè)置為持久化的隊(duì)列,queue中的消息會在server本地硬盤存儲一份,防止系統(tǒng)crash,數(shù)據(jù)丟失 設(shè)置為臨時(shí)隊(duì)列,queue中的數(shù)據(jù)在系統(tǒng)重啟之后就會丟失 設(shè)置為自動刪除的隊(duì)列,當(dāng)不存在用戶連接到server,隊(duì)列中的數(shù)據(jù)會被自動刪除

Binding:綁定,把exchange和queue按照路由規(guī)則綁定起來,多對多關(guān)系
Routing Key:路由關(guān)鍵字,exchange根據(jù)這個(gè)關(guān)鍵字進(jìn)行消息投遞
Producer:消息生產(chǎn)者
Consumer:消息消費(fèi)者

通信過程
假設(shè)P1和C1注冊了相同的Broker,Exchange和Queue。P1發(fā)送的消息最終會被C1消費(fèi)?;镜耐ㄐ帕鞒檀蟾湃缦滤荆?/p>P1生產(chǎn)消息,發(fā)送給服務(wù)器端的Exchange Exchange收到消息,根據(jù)ROUTING KEY,將消息轉(zhuǎn)發(fā)給匹配的Queue1 Queue1收到消息,將消息發(fā)送給訂閱者C1 C1收到消息,發(fā)送ACK給隊(duì)列確認(rèn)收到消息 Queue1收到ACK,刪除隊(duì)列中緩存的此條消息

Consumer收到消息時(shí)需要顯式的向rabbit broker發(fā)送basic.ack消息或者consumer訂閱消息時(shí)設(shè)置auto_ack參數(shù)為true。在通信過程中,隊(duì)列對ACK的處理有以下幾種情況:

如果consumer接收了消息,發(fā)送ack,rabbitmq會刪除隊(duì)列中這個(gè)消息,發(fā)送另一條消息給consumer。 如果cosumer接受了消息, 但在發(fā)送ack之前斷開連接,rabbitmq會認(rèn)為這條消息沒有被deliver,在consumer在次連接的時(shí)候,這條消息會被redeliver。 如果consumer接受了消息,但是程序中有bug,忘記了ack,rabbitmq不會重復(fù)發(fā)送消息。 rabbitmq2.0.0和之后的版本支持consumer reject某條(類)消息,可以通過設(shè)置requeue參數(shù)中的reject為true達(dá)到目地,那么rabbitmq將會把消息發(fā)送給下一個(gè)注冊的consumer。

網(wǎng)站欄目:MQ全解析
轉(zhuǎn)載源于:http://weahome.cn/article/cgehdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部