RabbitMq相關(guān)

1、簡(jiǎn)介

RabbitMQ 是由Erlang開發(fā)的 AMQP(Advanved Message Queue)的開源實(shí)現(xiàn)纠修;消息投送時(shí)使用?“至少一次交付”模式撵溃,來保證消息的投送成功率绣否。

AMQP:是一種進(jìn)程間傳遞異步消息的網(wǎng)絡(luò)協(xié)議


幾個(gè)概念說明:

Broker:它提供一種傳輸服務(wù),它的角色就是維護(hù)一條從生產(chǎn)者到消費(fèi)者的路線泞当,保證數(shù)據(jù)能按照指定的方式進(jìn)行傳輸,

Exchange:消息交換機(jī),它指定消息按什么規(guī)則,路由到哪個(gè)隊(duì)列。

Queue:消息的載體,每個(gè)消息都會(huì)被投到一個(gè)或多個(gè)隊(duì)列奇颠。

Binding:綁定败去,它的作用就是把exchange和queue按照路由規(guī)則綁定起來.

Routing Key:路由關(guān)鍵字,exchange根據(jù)這個(gè)關(guān)鍵字進(jìn)行消息投遞。

vhost:虛擬主機(jī),一個(gè)broker里可以有多個(gè)vhost烈拒,用作不同用戶的權(quán)限分離为迈。

Producer:消息生產(chǎn)者,就是投遞消息的程序.

Consumer:消息消費(fèi)者,就是接受消息的程序.

Channel:消息通道,在客戶端的每個(gè)連接里,可建立多個(gè)channel.

2三椿、RabbitMq工作模式

2.1 simple 模式


simple

消息生產(chǎn)者將消息放入隊(duì)列

消息消費(fèi)者監(jiān)聽,消息隊(duì)列中有消息就消費(fèi)葫辐,自動(dòng)從隊(duì)列中刪除(隱患:消息可能沒有被消費(fèi)者正確處理,已經(jīng)從隊(duì)列中消失了,造成消息的丟失,這里可以設(shè)置成手動(dòng)的ack,但如果設(shè)置成手動(dòng)ack伴郁,處理完后要及時(shí)發(fā)送ack消息給隊(duì)列耿战,否則會(huì)造成內(nèi)存溢出)

2.2?work工作模式(資源的競(jìng)爭(zhēng))


work工作模式

消息生產(chǎn)者將消息放入隊(duì)列

但是會(huì)有多個(gè)消費(fèi)者,同時(shí)監(jiān)聽同一個(gè)隊(duì)列焊傅,來消費(fèi)消息剂陡。C1,C2同時(shí)搶隊(duì)列的消息內(nèi)容狐胎,誰先搶到誰負(fù)責(zé)處理(隱患:高并發(fā)情況下鸭栖,默認(rèn)會(huì)出現(xiàn)一個(gè)消息被多個(gè)消費(fèi)者共同使用情況,可以設(shè)置一個(gè)開關(guān)(syncronize) 保證一條消息只能被一個(gè)消費(fèi)者使用)

2.3?publish/subscribe發(fā)布訂閱(共享資源)


發(fā)布訂閱

每個(gè)消費(fèi)者監(jiān)聽自己的隊(duì)列

x是broker內(nèi)的交換機(jī)握巢,消息生產(chǎn)者將消息發(fā)送給交換機(jī)晕鹊,由交換機(jī)來轉(zhuǎn)發(fā)消息到綁定的隊(duì)列

2.4?routing路由模式


路由模式

消息生產(chǎn)者將消息發(fā)送給交換機(jī),交換機(jī)根據(jù)路由匹配對(duì)應(yīng)的消息隊(duì)列暴浦,然后對(duì)應(yīng)的消費(fèi)者才能消費(fèi)消息溅话;

2.5?topic 主題模式(路由模式的一種)


topic主題模式

* # 都是通配符,* 是匹配單個(gè)字符歌焦,#匹配字符

2.6 rpc模式


rpc模式


RPC就是遠(yuǎn)程調(diào)用方式飞几,Rabbitmq來實(shí)現(xiàn)的異步調(diào)用,流程如下:

1独撇、客戶端(消費(fèi)生產(chǎn)者)向 RPC隊(duì)列發(fā)送rpc調(diào)用消息屑墨,同時(shí)監(jiān)聽rpc響應(yīng)隊(duì)列

2、服務(wù)端監(jiān)聽RPC請(qǐng)求隊(duì)列纷铣,收到消息后執(zhí)行自身邏輯卵史,得到方法結(jié)果并發(fā)送到響應(yīng)隊(duì)列中

3、客戶端(消費(fèi)生產(chǎn)者)監(jiān)聽響應(yīng)隊(duì)列关炼,接收rpc調(diào)用結(jié)果

隊(duì)列交互 根據(jù)?replyTo(為請(qǐng)求創(chuàng)建匿名互斥隊(duì)列) 和?correlationId (請(qǐng)求的唯一值程腹,客戶端收到響應(yīng)結(jié)果時(shí) 校驗(yàn)使用)來實(shí)現(xiàn)

3、Exchange 類型

3.1 Direct

直連模式儒拂,要求消息與指定的路由鍵完全匹配


Direct

3.2 Topic

模糊匹配寸潦,路由鍵模糊匹配某種規(guī)則 ;符號(hào)“#”匹配一個(gè)或多個(gè)詞社痛,符號(hào)“*”只能匹配一個(gè)詞见转。



Topic

3.3?Fanout

不處理路由鍵,隊(duì)列與交換機(jī)綁定即可蒜哀。廣播式發(fā)送消息


Fanout

3.4?Headers

不處理路由鍵斩箫,發(fā)送消息中 headers屬性進(jìn)行匹配;隊(duì)列與交換機(jī)綁定是指定一組鍵值對(duì),消息的headers與鍵值對(duì)匹配乘客,完全匹配則路由到該隊(duì)列狐血,否則不處理


Headers

4、相關(guān)作用和使用場(chǎng)景

解耦:服務(wù)間調(diào)用 由直接調(diào)用改為mq中發(fā)起調(diào)用易核,如發(fā)短信匈织,或者 還款信息更改

異步:一個(gè)業(yè)務(wù)場(chǎng)景完成后,可以同時(shí)觸發(fā)其他場(chǎng)景并行執(zhí)行牡直;用戶下單時(shí)缀匕,發(fā)起三方數(shù)據(jù)檢查或發(fā)起審核

削峰:請(qǐng)求量增大時(shí),來平緩處理消息碰逸;如果 埋點(diǎn)處理或者 搶購活動(dòng)處理 乡小,或者延遲隊(duì)列處理

5、其他

怎么保證消息不丟失

ack確認(rèn)饵史,開啟持久化

重復(fù)消費(fèi)問題


參考:

消息中間件MQ與RabbitMQ面試題(2020最新版)

RabbitMQ四種Exchange類型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末满钟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子约急,更是在濱河造成了極大的恐慌零远,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厌蔽,死亡現(xiàn)場(chǎng)離奇詭異牵辣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奴饮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門纬向,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戴卜,你說我怎么就攤上這事逾条。” “怎么了投剥?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵师脂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我江锨,道長(zhǎng)吃警,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任啄育,我火速辦了婚禮酌心,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挑豌。我一直安慰自己安券,他們只是感情好墩崩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侯勉,像睡著了一般鹦筹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上址貌,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天盛龄,我揣著相機(jī)與錄音,去河邊找鬼芳誓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛啊鸭,可吹牛的內(nèi)容都是我干的锹淌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赠制,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼赂摆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钟些,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤烟号,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后政恍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汪拥,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年篙耗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迫筑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宗弯,死狀恐怖脯燃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒙保,我是刑警寧澤辕棚,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站邓厕,受9級(jí)特大地震影響逝嚎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邑狸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一懈糯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧单雾,春花似錦赚哗、人聲如沸她紫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贿讹。三九已至,卻和暖如春够掠,著一層夾襖步出監(jiān)牢的瞬間民褂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工疯潭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赊堪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓竖哩,卻偏偏與公主長(zhǎng)得像哭廉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子相叁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355