91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RabbitMQ常用面試題有哪些

發布時間:2020-11-13 17:14:41 來源:億速云 閱讀:2068 作者:小新 欄目:開發技術

小編給大家分享一下RabbitMQ常用面試題有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

這篇文章將為大家詳細講解有關RabbitMQ常用面試題有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、什么是RabbitMQ?為什么使用RabbitMQ?

答:RabbitMQ是一款開源的,Erlang編寫的,基于AMQP協議的,消息中間件;

可以用它來:解耦、異步、削峰。

2、RabbitMQ有什么優缺點?

答:優點:解耦、異步、削峰;

缺點:降低了系統的穩定性:本來系統運行好好的,現在你非要加入個消息隊列進去,那消息隊列掛了,你的系統不是呵呵了。因此,系統可用性會降低;

增加了系統的復雜性:加入了消息隊列,要多考慮很多方面的問題,比如:一致性問題、如何保證消息不被重復消費、如何保證消息可靠性傳輸等。因此,需要考慮的東西更多,復雜性增大。

3、如何保證RabbitMQ的高可用?

答:沒有哪個項目會只用一搭建一臺RabbitMQ服務器提供服務,風險太大;

4、如何保證RabbitMQ不被重復消費?

答:先說為什么會重復消費:正常情況下,消費者在消費消息的時候,消費完畢后,會發送一個確認消息給消息隊列,消息隊列就知道該消息被消費了,就會將該消息從消息隊列中刪除;

但是因為網絡傳輸等等故障,確認信息沒有傳送到消息隊列,導致消息隊列不知道自己已經消費過該消息了,再次將消息分發給其他的消費者。

針對以上問題,一個解決思路是:保證消息的唯一性,就算是多次傳輸,不要讓消息的多次消費帶來影響;保證消息等冪性;

比如:在寫入消息隊列的數據做唯一標示,消費消息時,根據唯一標識判斷是否消費過;

5、如何保證RabbitMQ消息的可靠傳輸?

答:消息不可靠的情況可能是消息丟失,劫持等原因;

丟失又分為:生產者丟失消息、消息列表丟失消息、消費者丟失消息;

生產者丟失消息:從生產者弄丟數據這個角度來看,RabbitMQ提供transaction和confirm模式來確保生產者不丟消息;

transaction機制就是說:發送消息前,開啟事務(channel.txSelect()),然后發送消息,如果發送過程中出現什么異常,事務就會回滾(channel.txRollback()),如果發送成功則提交事務(channel.txCommit())。然而,這種方式有個缺點:吞吐量下降;

confirm模式用的居多:一旦channel進入confirm模式,所有在該信道上發布的消息都將會被指派一個唯一的ID(從1開始),一旦消息被投遞到所有匹配的隊列之后;

rabbitMQ就會發送一個ACK給生產者(包含消息的唯一ID),這就使得生產者知道消息已經正確到達目的隊列了;

如果rabbitMQ沒能處理該消息,則會發送一個Nack消息給你,你可以進行重試操作。

消息隊列丟數據:消息持久化。

處理消息隊列丟數據的情況,一般是開啟持久化磁盤的配置。

這個持久化配置可以和confirm機制配合使用,你可以在消息持久化磁盤后,再給生產者發送一個Ack信號。

這樣,如果消息持久化磁盤之前,rabbitMQ陣亡了,那么生產者收不到Ack信號,生產者會自動重發。

那么如何持久化呢?

這里順便說一下吧,其實也很容易,就下面兩步

  1. 將queue的持久化標識durable設置為true,則代表是一個持久的隊列
  2. 發送消息的時候將deliveryMode=2

這樣設置以后,即使rabbitMQ掛了,重啟后也能恢復數據

消費者丟失消息:消費者丟數據一般是因為采用了自動確認消息模式,改為手動確認消息即可!

消費者在收到消息之后,處理消息之前,會自動回復RabbitMQ已收到消息;

如果這時處理消息失敗,就會丟失該消息;

解決方案:處理消息成功后,手動回復確認消息。

6、如何保證RabbitMQ消息的順序性?

答:單線程消費保證消息的順序性;對消息進行編號,消費者處理消息是根據編號處理消息;

以上是RabbitMQ常用面試題有哪些的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尖扎县| 黄骅市| 丰城市| 洪江市| 四川省| 资中县| 龙川县| 南雄市| 佳木斯市| 洪泽县| 藁城市| 古浪县| 涪陵区| 东明县| 镇巴县| 兴国县| 金堂县| 邢台县| 淮滨县| 巧家县| 石河子市| 江北区| 收藏| 东宁县| 抚顺县| 修武县| 焦作市| 竹山县| 广丰县| 蛟河市| 古交市| 建德市| 长治市| 汉阴县| 湘阴县| 达拉特旗| 砀山县| 石景山区| 哈密市| 衡山县| 富川|