1.訊息佇列的應用場景有哪些?
答:訊息佇列的應用場景如下。
應用解耦,比如,使用者下單後,訂單系統需要通知庫存系統,假如庫存系統無法存取,則訂單減庫存將失敗,從而導致訂單失敗。訂單系統與庫存系統耦合,這個時候如果使用訊息佇列,可以返回給使用者成功,先把訊息持久化,等庫存系統恢復後,就可以正常消費減去庫存了。
削峯填谷,比如,秒殺活動,一般會因爲流量過大,從而導致流量暴增,應用掛掉,這個時候加上訊息佇列,伺服器接收到使用者的請求後,首先寫入訊息佇列,假如訊息佇列長度超過最大數量,則直接拋棄使用者請求或跳轉到錯誤頁面。
日誌系統,比如,用戶端負責將日誌採集,然後定時寫入訊息佇列,訊息佇列再統一將日誌數據儲存和轉發。
2.RabbitMQ 有哪些優點?
答:RabbitMQ 的優點如下:
可靠性,RabbitMQ 的持久化支援,保證了訊息的穩定性;
高併發,RabbitMQ 使用了 Erlang 開發語言,Erlang 是爲電話交換機開發的語言,天生自帶高併發光環和高可用特性;
叢集部署簡單,正是因爲 Erlang 使得 RabbitMQ 叢集部署變的非常簡單;
社羣活躍度高,因爲 RabbitMQ 應用比較廣泛,所以社羣的活躍度也很高;
解決問題成本低,因爲資料比較多,所以解決問題的成本也很低;
支援多種語言,主流的程式語言都支援,如 Java、.NET、PHP、Python、JavaScript、Ruby、Go 等;
外掛多方便使用,如網頁控制檯訊息管理外掛、訊息延遲外掛等。
3.RabbitMQ 有哪些重要的角色?
答:RabbitMQ 包含以下三個重要的角色:
生產者:訊息的建立者,負責建立和推播數據到訊息