中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

RabbitMQ的面試題有哪些

發布時間:2021-12-24 09:44:34 來源:億速云 閱讀:168 作者:小新 欄目:開發技術

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

一、什么是RabbitMQ?

采用AMQP高級消息隊列協議的一種消息隊列技術,最大的特點就是消費并不需要確保提供方存在,實現了服務之間的高度解耦。

二、為什么要使用RabbitMQ?

①在分布式系統下具備異步,削峰,負載均衡等一系列高級功能;

②擁有持久化的機制,進程消息,隊列中的信息也可以保存下來。

③實現消費者和生產者之間的解耦。

④對于高并發場景下,利用消息隊列可以使得同步訪問變為串行訪問達到一定量的限流,利于數據庫的操作。

⑤可以使用消息隊列達到異步下單的效果,排隊中,后臺進行邏輯下單。

三、RabbitMQ的使用場景有哪些?

①跨系統的異步通信,所有需要異步交互的地方都可以使用消息隊列。就像我們除了打電話(同步)以外,還需要發短信,發電子郵件(異步)的通訊方式。

②多個應用之間的耦合,由于消息是平臺無關和語言無關的,而且語義上也不再是函數調用,因此更適合作為多個應用之間的松耦合的接口。基于消息隊列的耦合,不需要發送方和接收方同時在線。在企業應用集成(EAI)中,文件傳輸,共享數據庫,消息隊列,遠程過程調用都可以作為集成的方法。

③應用內的同步變異步,比如訂單處理,就可以由前端應用將訂單信息放到隊列,后端應用從隊列里依次獲得消息處理,高峰時的大量訂單可以積壓在隊列里慢慢處理掉。由于同步通常意味著阻塞,而大量線程的阻塞會降低計算機的性能。

④消息驅動的架構(EDA),系統分解為消息隊列,和消息制造者和消息消費者,一個處理流程可以根據需要拆成多個階段(Stage),階段之間用隊列連接起來,前一個階段處理的結果放入隊列,后一個階段從隊列中獲取消息繼續處理。

⑤應用需要更靈活的耦合方式,如發布訂閱,比如可以指定路由規則。

⑥跨局域網,甚至跨城市的通訊(CDN行業),比如北京機房與廣州機房的應用程序的通信。

四、RabbitMQ有哪些重要的角色?

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

①生產者:消息的創建者,負責創建和推送數據到消息服務器;

②消費者:消息的接收方,用于處理數據和確認消息;

③代理:就是RabbitMQ本身,用于扮演“快遞”的角色,本身不生產消息,只是扮演“快遞”的角色。

五、如何確保消息正確地發送至RabbitMQ?如何確保消息接收方消費了消息?

1、發送方確認模式

①將信道設置成confirm模式(發送方確認模式),則所有在信道上發布的消息都會被指派一個唯一的ID。

②一旦消息被投遞到目的隊列后,或者消息被寫入磁盤后(可持久化的消息),信道會發送一個確認給生產者(包含消息唯一 ID)。

③如果RabbitMQ發生內部錯誤從而導致消息丟失,會發送一條 nack(notacknowledged,未確認)消息。

④發送方確認模式是異步的,生產者應用程序在等待確認的同時,可以繼續發送消息。當確認消息到達生產者應用程序,生產者應用程序的回調方法就會被觸發來處理確認消息。

2、接收方確認機制

①消費者接收每一條消息后都必須進行確認(消息接收和消息確認是兩個不同操作)。只有消費者確認了消息,RabbitMQ 才能安全地把消息從隊列中刪除。

②這里并沒有用到超時機制,RabbitMQ僅通過Consumer的連接中斷來確認是否需要重新發送消息。也就是說,只要連接不中斷,RabbitMQ給了Consumer足夠長的時間來處理消息。保證數據的最終一致性。

3、下面羅列幾種特殊情況

①如果消費者接收到消息,在確認之前斷開了連接或取消訂閱,RabbitMQ會認為消息沒有被分發,然后重新分發給下一個訂閱的消費者。(可能存在消息重復消費的隱患,需要去重)

②如果消費者接收到消息卻沒有確認消息,連接也未斷開,則RabbitMQ認為該消費者繁忙,將不會給該消費者分發更多的消息。

六、RabbitMQ怎么避免消息丟失?

①消息持久化;

②ACK確認機制;

③設置集群鏡像模式;

④消息補償機制。

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

①聲明隊列必須設置持久化durable設置為 true。

②消息推送投遞模式必須設置持久化,deliveryMode設置為2(持久)。

③消息已經到達持久化交換器。

④消息已經到達持久化隊列。

以上四個條件都滿足才能保證消息持久化成功。

八、RabbitMQ持久化有什么缺點?

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

九、RabbitMQ 有幾種廣播類型?

三種廣播模式:

①fanout:所有bind到此exchange的queue都可以接收消息(純廣播,綁定到RabbitMQ的接受者都能收到消息);

②direct:通過routingKey和exchange決定的那個唯一的queue可以接收消息;

③topic:所有符合routingKey(此時可以是一個表達式)的routingKey所bind的queue可以接收消息;

十、RabbitMQ中vhost的作用是什么?

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

關于“RabbitMQ的面試題有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

庄浪县| 将乐县| 东海县| 江阴市| 小金县| 潼关县| 六安市| 运城市| 定西市| 海宁市| 商洛市| 拜泉县| 拉孜县| 循化| 扎鲁特旗| 萍乡市| 揭西县| 临猗县| 多伦县| 霍林郭勒市| 盐亭县| 凭祥市| 九龙坡区| 定州市| 荆州市| 镇坪县| 扶沟县| 吴堡县| 恩平市| 临沂市| 依安县| 恭城| 宜良县| 含山县| 东乡族自治县| 阜平县| 师宗县| 调兵山市| 郸城县| 玛纳斯县| 涟水县|