消息隊列的作用

本文純屬個人理解,如有不對,歡迎指正

在程序中,經常會存在這種情況,一個請求里 會有一些 操作步驟,我們不需要讓它實時的完成,只需要最終完成了就行了。 比如:

當商家將用戶的訂單改為 「已發貨」 以後, 系統通常會推送一個消息給客戶,但是推送消息這個步驟,沒必要阻塞主線程,因為這個請求的主要任務就是改訂單狀態, 那有沒有一種方法可以 讓 推送消息 這個步驟,不去阻塞主線程呢?

當然有,那就是開一個線程去處理啊。 但是問題又來了,如果程序中這種情況多了怎麼辦,到處開線程,不方便統一管理,而且在應用伺服器上開太多的線程會很佔資源,於是, 消息隊列 誕生了。

還是上面的例子,當商家將訂單改為「已發貨」以後,程序往隊列里 插入一條消息,去給用戶推送通知。 插入後,立刻響應給客戶端, 然後由另一個程序 去隊列里,獲取這條消息,並執行操作。

這個就是消息隊列的作用。 減少請求中的計算任務,節約伺服器資源,以及可以更快的響應給 客戶端。

隊列適用於 這種非同步的場景,如果 下一步的 操作需要當前步驟的結果 來作為依據的話。則不適合用隊列來做。

推薦閱讀:

請教各位大拿:Tachyon和Redis有什麼區別?
Redis源碼剖析--源碼結構解析
15位阿里Redis、MongoDB、HBase大咖直播分享,全方位解析資料庫技術!
阿里雲Redis混合存儲典型場景:如何輕鬆搭建視頻直播間系統
Redis高可用簡要梳理

TAG:RabbitMQ | 消息隊列 | Redis |