Java面試題(RabbitMQ)

135.rabbitmq 的使用場景有哪些?

①. 跨系統(tǒng)的異步通信,所有需要異步交互的地方都可以使用消息隊列拜隧。就像我們除了打電話(同步)以外当悔,還需要發(fā)短信,發(fā)電子郵件(異步)的通訊方式划栓。
②. 多個應用之間的耦合,由于消息是平臺無關和語言無關的,而且語義上也不再是函數調用洋机,因此更適合作為多個應用之間的松耦合的接口⊙蠡辏基于消息隊列的耦合绷旗,不需要發(fā)送方和接收方同時在線。在企業(yè)應用集成(EAI)中副砍,文件傳輸衔肢,共享數據庫,消息隊列豁翎,遠程過程調用都可以作為集成的方法角骤。
③. 應用內的同步變異步,比如訂單處理,就可以由前端應用將訂單信息放到隊列邦尊,后端應用從隊列里依次獲得消息處理背桐,高峰時的大量訂單可以積壓在隊列里慢慢處理掉。由于同步通常意味著阻塞蝉揍,而大量線程的阻塞會降低計算機的性能链峭。
④. 消息驅動的架構(EDA),系統(tǒng)分解為消息隊列又沾,和消息制造者和消息消費者弊仪,一個處理流程可以根據需要拆成多個階段(Stage),階段之間用隊列連接起來杖刷,前一個階段處理的結果放入隊列励饵,后一個階段從隊列中獲取消息繼續(xù)處理。
⑤. 應用需要更靈活的耦合方式挺勿,如發(fā)布訂閱曲横,比如可以指定路由規(guī)則。
⑥. 跨局域網不瓶,甚至跨城市的通訊(CDN行業(yè))禾嫉,比如北京機房與廣州機房的應用程序的通信。

136.rabbitmq 有哪些重要的角色蚊丐?

RabbitMQ 中重要的角色有:生產者熙参、消費者和代理:

  • 生產者:消息的創(chuàng)建者,負責創(chuàng)建和推送數據到消息服務器麦备;
  • 消費者:消息的接收方孽椰,用于處理數據和確認消息;
  • 代理:就是 RabbitMQ 本身凛篙,用于扮演“快遞”的角色黍匾,本身不生產消息,只是扮演“快遞”的角色呛梆。

137.rabbitmq 有哪些重要的組件锐涯?

  • ConnectionFactory(連接管理器):應用程序與Rabbit之間建立連接的管理器,程序代碼中使用填物。
  • Channel(信道):消息推送使用的通道纹腌。
  • Exchange(交換器):用于接受、分配消息滞磺。
  • Queue(隊列):用于存儲生產者的消息升薯。
  • RoutingKey(路由鍵):用于把生成者的數據分配到交換器上。
  • BindingKey(綁定鍵):用于把交換器的消息綁定到隊列上击困。

138.rabbitmq 中 vhost 的作用是什么涎劈?

vhost 可以理解為虛擬 broker ,即 mini-RabbitMQ server。其內部均含有獨立的 queue责语、exchange 和 binding 等炮障,但最最重要的是目派,其擁有獨立的權限系統(tǒng)坤候,可以做到 vhost 范圍的用戶控制。當然企蹭,從 RabbitMQ 的全局角度白筹,vhost 可以作為不同權限隔離的手段(一個典型的例子就是不同的應用可以跑在不同的 vhost 中)。

139.rabbitmq 的消息是怎么發(fā)送的谅摄?

首先客戶端必須連接到 RabbitMQ 服務器才能發(fā)布和消費消息徒河,客戶端和 rabbit server 之間會創(chuàng)建一個 tcp 連接,一旦 tcp 打開并通過了認證(認證就是你發(fā)送給 rabbit 服務器的用戶名和密碼)送漠,你的客戶端和 RabbitMQ 就創(chuàng)建了一條 amqp 信道(channel)顽照,信道是創(chuàng)建在“真實” tcp 上的虛擬連接,amqp 命令都是通過信道發(fā)送出去的闽寡,每個信道都會有一個唯一的 id代兵,不論是發(fā)布消息,訂閱隊列都是通過這個信道完成的爷狈。

140.rabbitmq 怎么保證消息的穩(wěn)定性植影?

提供了事務的功能。
通過將 channel 設置為 confirm(確認)模式涎永。

141.rabbitmq 怎么避免消息丟失思币?

  • 消息持久化
  • ACK確認機制
  • 設置集群鏡像模式
  • 消息補償機制

142.要保證消息持久化成功的條件有哪些?

  • 聲明隊列必須設置持久化 durable 設置為 true.
  • 消息推送投遞模式必須設置持久化羡微,deliveryMode 設置為 2(持久)谷饿。
  • 消息已經到達持久化交換器。
  • 消息已經到達持久化隊列妈倔。
    以上四個條件都滿足才能保證消息持久化成功博投。

143.rabbitmq 持久化有什么缺點?

持久化的缺地就是降低了服務器的吞吐量启涯,因為使用的是磁盤而非內存存儲贬堵,從而降低了吞吐量〗嵬荩可盡量使用 ssd 硬盤來緩解吞吐量的問題黎做。

144.rabbitmq 有幾種廣播類型?

三種廣播模式:

  • fanout: 所有bind到此exchange的queue都可以接收消息(純廣播松忍,綁定到RabbitMQ的接受者都能收到消息)蒸殿;
  • direct: 通過routingKey和exchange決定的那個唯一的queue可以接收消息;
  • topic:所有符合routingKey(此時可以是一個表達式)的routingKey所bind的queue可以接收消息;

145.rabbitmq 怎么實現延遲消息隊列宏所?

通過消息過期后進入死信交換器酥艳,再由交換器轉發(fā)到延遲消費隊列,實現延遲功能爬骤;
使用 RabbitMQ-delayed-message-exchange 插件實現延遲功能充石。

146.rabbitmq 集群有什么用?

集群主要有以下兩個用途:

  • 高可用:某個服務器出現問題霞玄,整個 RabbitMQ 還可以繼續(xù)使用骤铃;
  • 高容量:集群可以承載更多的消息量。

147.rabbitmq 節(jié)點的類型有哪些坷剧?

  • 磁盤節(jié)點:消息會存儲到磁盤惰爬。
  • 內存節(jié)點:消息都存儲在內存中,重啟服務器消息丟失惫企,性能高于磁盤類型撕瞧。

148.rabbitmq 集群搭建需要注意哪些問題?

各節(jié)點之間使用“–link”連接狞尔,此屬性不能忽略丛版。
各節(jié)點使用的 erlang cookie 值必須相同,此值相當于“秘鑰”的功能沪么,用于各節(jié)點的認證硼婿。
整個集群中必須包含一個磁盤節(jié)點。

149.rabbitmq 每個節(jié)點是其他節(jié)點的完整拷貝嗎禽车?為什么寇漫?

不是,原因有以下兩個:

  • 存儲空間的考慮:如果每個節(jié)點都擁有所有隊列的完全拷貝殉摔,這樣新增節(jié)點不但沒有新增存儲空間州胳,反而增加了更多的冗余數據;
  • 性能的考慮:如果每條消息都需要完整拷貝到每一個集群節(jié)點逸月,那新增節(jié)點并沒有提升處理消息的能力栓撞,最多是保持和單節(jié)點相同的性能甚至是更糟。

150.rabbitmq 集群中唯一一個磁盤節(jié)點崩潰了會發(fā)生什么情況碗硬?

如果唯一磁盤的磁盤節(jié)點崩潰了瓤湘,不能進行以下操作:

  • 不能創(chuàng)建隊列
  • 不能創(chuàng)建交換器
  • 不能創(chuàng)建綁定
  • 不能添加用戶
  • 不能更改權限
  • 不能添加和刪除集群節(jié)點
    唯一磁盤節(jié)點崩潰了,集群是可以保持運行的恩尾,但你不能更改任何東西弛说。

151.rabbitmq 對集群節(jié)點停止順序有要求嗎?

RabbitMQ 對集群的停止的順序是有要求的翰意,應該先關閉內存節(jié)點木人,最后再關閉磁盤節(jié)點信柿。如果順序恰好相反的話,可能會造成消息的丟失醒第。

目錄:2020最新Java面試題及答案匯總(上)
目錄:2020最新Java面試題及答案匯總(下)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末渔嚷,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子稠曼,更是在濱河造成了極大的恐慌形病,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒲列,死亡現場離奇詭異窒朋,居然都是意外死亡搀罢,警方通過查閱死者的電腦和手機蝗岖,發(fā)現死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榔至,“玉大人抵赢,你說我怎么就攤上這事∵笕。” “怎么了铅鲤?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枫弟。 經常有香客問我邢享,道長,這世上最難降的妖魔是什么淡诗? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任骇塘,我火速辦了婚禮,結果婚禮上韩容,老公的妹妹穿的比我還像新娘款违。我一直安慰自己,他們只是感情好群凶,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布插爹。 她就那樣靜靜地躺著,像睡著了一般请梢。 火紅的嫁衣襯著肌膚如雪赠尾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天毅弧,我揣著相機與錄音气嫁,去河邊找鬼。 笑死形真,一個胖子當著我的面吹牛杉编,可吹牛的內容都是我干的超全。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼邓馒,長吁一口氣:“原來是場噩夢啊……” “哼嘶朱!你這毒婦竟也來了疏遏?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唱遭,沒想到半個月后戳寸,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡拷泽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了脂矫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庭再。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡佩微,死狀恐怖,靈堂內的尸體忽然破棺而出哺眯,到底是詐尸還是另有隱情,我是刑警寧澤一疯,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布墩邀,位于F島的核電站,受9級特大地震影響眉睹,放射性物質發(fā)生泄漏斋配。R本人自食惡果不足惜艰争,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一甩卓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猛频,春花似錦、人聲如沸诽凌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尖奔,卻和暖如春提茁,著一層夾襖步出監(jiān)牢的瞬間馁菜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工峭火, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蜓洪。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓隆檀,卻偏偏與公主長得像粹湃,于是被迫代替她去往敵國和親裳仆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355