訊息佇列面試題彙總

2020-08-12 09:22:16

1.訊息佇列的應用場景有哪些?

答:訊息佇列的應用場景如下。

  • 應用解耦,比如,使用者下單後,訂單系統需要通知庫存系統,假如庫存系統無法存取,則訂單減庫存將失敗,從而導致訂單失敗。訂單系統與庫存系統耦合,這個時候如果使用訊息佇列,可以返回給使用者成功,先把訊息持久化,等庫存系統恢復後,就可以正常消費減去庫存了。

  • 削峯填谷,比如,秒殺活動,一般會因爲流量過大,從而導致流量暴增,應用掛掉,這個時候加上訊息佇列,伺服器接收到使用者的請求後,首先寫入訊息佇列,假如訊息佇列長度超過最大數量,則直接拋棄使用者請求或跳轉到錯誤頁面。

  • 日誌系統,比如,用戶端負責將日誌採集,然後定時寫入訊息佇列,訊息佇列再統一將日誌數據儲存和轉發。

2.RabbitMQ 有哪些優點?

答:RabbitMQ 的優點如下:

  • 可靠性,RabbitMQ 的持久化支援,保證了訊息的穩定性;

  • 高併發,RabbitMQ 使用了 Erlang 開發語言,Erlang 是爲電話交換機開發的語言,天生自帶高併發光環和高可用特性;

  • 叢集部署簡單,正是因爲 Erlang 使得 RabbitMQ 叢集部署變的非常簡單;

  • 社羣活躍度高,因爲 RabbitMQ 應用比較廣泛,所以社羣的活躍度也很高;

  • 解決問題成本低,因爲資料比較多,所以解決問題的成本也很低;

  • 支援多種語言,主流的程式語言都支援,如 Java、.NET、PHP、Python、JavaScript、Ruby、Go 等;

  • 外掛多方便使用,如網頁控制檯訊息管理外掛、訊息延遲外掛等。

3.RabbitMQ 有哪些重要的角色?

答:RabbitMQ 包含以下三個重要的角色:

  • 生產者:訊息的建立者,負責建立和推播數據到訊息