小編給大家分享一下RabbitMQ常用面試題有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)與策劃設(shè)計,江岸網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:江岸等地區(qū)。江岸做網(wǎng)站價格咨詢:18980820575這篇文章將為大家詳細講解有關(guān)RabbitMQ常用面試題有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1、什么是RabbitMQ?為什么使用RabbitMQ?
答:RabbitMQ是一款開源的,Erlang編寫的,基于AMQP協(xié)議的,消息中間件;
可以用它來:解耦、異步、削峰。
2、RabbitMQ有什么優(yōu)缺點?
答:優(yōu)點:解耦、異步、削峰;
缺點:降低了系統(tǒng)的穩(wěn)定性:本來系統(tǒng)運行好好的,現(xiàn)在你非要加入個消息隊列進去,那消息隊列掛了,你的系統(tǒng)不是呵呵了。因此,系統(tǒng)可用性會降低;
增加了系統(tǒng)的復(fù)雜性:加入了消息隊列,要多考慮很多方面的問題,比如:一致性問題、如何保證消息不被重復(fù)消費、如何保證消息可靠性傳輸?shù)?。因此,需要考慮的東西更多,復(fù)雜性增大。
3、如何保證RabbitMQ的高可用?
答:沒有哪個項目會只用一搭建一臺RabbitMQ服務(wù)器提供服務(wù),風險太大;
4、如何保證RabbitMQ不被重復(fù)消費?
答:先說為什么會重復(fù)消費:正常情況下,消費者在消費消息的時候,消費完畢后,會發(fā)送一個確認消息給消息隊列,消息隊列就知道該消息被消費了,就會將該消息從消息隊列中刪除;
但是因為網(wǎng)絡(luò)傳輸?shù)鹊裙收希_認信息沒有傳送到消息隊列,導(dǎo)致消息隊列不知道自己已經(jīng)消費過該消息了,再次將消息分發(fā)給其他的消費者。
針對以上問題,一個解決思路是:保證消息的性,就算是多次傳輸,不要讓消息的多次消費帶來影響;保證消息等冪性;
比如:在寫入消息隊列的數(shù)據(jù)做標示,消費消息時,根據(jù)標識判斷是否消費過;
5、如何保證RabbitMQ消息的可靠傳輸?
答:消息不可靠的情況可能是消息丟失,劫持等原因;
丟失又分為:生產(chǎn)者丟失消息、消息列表丟失消息、消費者丟失消息;
生產(chǎn)者丟失消息:從生產(chǎn)者弄丟數(shù)據(jù)這個角度來看,RabbitMQ提供transaction和confirm模式來確保生產(chǎn)者不丟消息;
transaction機制就是說:發(fā)送消息前,開啟事務(wù)(channel.txSelect()),然后發(fā)送消息,如果發(fā)送過程中出現(xiàn)什么異常,事務(wù)就會回滾(channel.txRollback()),如果發(fā)送成功則提交事務(wù)(channel.txCommit())。然而,這種方式有個缺點:吞吐量下降;
confirm模式用的居多:一旦channel進入confirm模式,所有在該信道上發(fā)布的消息都將會被指派一個的ID(從1開始),一旦消息被投遞到所有匹配的隊列之后;
rabbitMQ就會發(fā)送一個ACK給生產(chǎn)者(包含消息的ID),這就使得生產(chǎn)者知道消息已經(jīng)正確到達目的隊列了;
如果rabbitMQ沒能處理該消息,則會發(fā)送一個Nack消息給你,你可以進行重試操作。
消息隊列丟數(shù)據(jù):消息持久化。
處理消息隊列丟數(shù)據(jù)的情況,一般是開啟持久化磁盤的配置。
這個持久化配置可以和confirm機制配合使用,你可以在消息持久化磁盤后,再給生產(chǎn)者發(fā)送一個Ack信號。
這樣,如果消息持久化磁盤之前,rabbitMQ陣亡了,那么生產(chǎn)者收不到Ack信號,生產(chǎn)者會自動重發(fā)。
那么如何持久化呢?
這里順便說一下吧,其實也很容易,就下面兩步
這樣設(shè)置以后,即使rabbitMQ掛了,重啟后也能恢復(fù)數(shù)據(jù)
消費者丟失消息:消費者丟數(shù)據(jù)一般是因為采用了自動確認消息模式,改為手動確認消息即可!
消費者在收到消息之后,處理消息之前,會自動回復(fù)RabbitMQ已收到消息;
如果這時處理消息失敗,就會丟失該消息;
解決方案:處理消息成功后,手動回復(fù)確認消息。
6、如何保證RabbitMQ消息的順序性?
答:單線程消費保證消息的順序性;對消息進行編號,消費者處理消息是根據(jù)編號處理消息;
以上是RabbitMQ常用面試題有哪些的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章名稱:RabbitMQ常用面試題有哪些-創(chuàng)新互聯(lián)
本文鏈接:http://jinyejixie.com/article42/jjcec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、定制開發(fā)、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作、網(wǎng)站改版、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容