【Message Queue】 井然有序的排隊機制 - 基本介紹

更新於 發佈於 閱讀時間約 2 分鐘

同步與非同步任務

在進入Message Queue之前我們先來了解一下同步/非同步任務的概念。
  • 菜單稱為訊息(Message), 為工作內容描述。
  • 送出菜單的客人稱為生產者(Producer), 負責建立訊息。
  • 櫃台就相當於Queue, 負責接單並依序處理。
  • 廚師就是消費者的概念, 負責消化Queue裡面的訊息。

什麼是Message Queue?

採生產者/消費者模式,主要提供不同process之間通訊的方式之一。
  • Producer: 負責生產訊息。
  • Consumer: 負責接收及處理訊息。

應用場景

應用解耦

用戶下單後, 訂單系統需要通知庫存系統, 但是假設庫存系統故障, 就會導致客戶下單失敗。
引入Message Queue之後
  • 訂單系統: 用戶下單後, 訂單系統完成持久化工作後, 發布消息到Message Queue, 並返回下單成功。
  • 庫存系統: 向Message Queue訂閱下單的消息, 再根據下單的訊息內容進行庫存的更新。
  • 如此一來客戶下單時假設庫存系統故障, 仍可正常下單。

並行處理

帳號註冊成功後還需要發送Mail及簡訊, 如果還沒有Message Queue時勢必需要依序發送, 但如果中間隔了一層Message Queue時, 簡訊系統及Mail系統就可以各自獲取訊息並處理。

流量控制

電商平台常常推出限時搶購活動, 但如果大家都在同一時間發出請求, 那麼當訂單系統無法負荷時將造成下單失敗, 勢必引來使用者抱怨的狀況, 而為了防止這種後端被壓垮的狀況, 可以導入MQ的架構來因應, 透過Queue來堆積下單的請求, 當系統有能力處理時再進行處理。
  1. 下單系統收到請求後就先丟到Queue,當Queue已經超出最大設定值時就reject請求。
  2. 訂單處理系統根據Queue的依序請求訊息進行後續處理。
為什麼會看到廣告
avatar-img
118會員
266內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
軟體世界隨著現實應用越來越複雜,需要處理的資料量也就隨之倍數增長,假設我們每一個動作都要等待處理完畢後再回應,那麼勢必對於廣大用戶的使用者體驗大打折扣,因此這個過程如果有一個中間人幫我們處理掉先來後到的流程,那麼是不是我只要將要進行的動作交給中間人即可,而背後處理的服務商則透過中間人依序處理,處理
軟體世界隨著現實應用越來越複雜,需要處理的資料量也就隨之倍數增長,假設我們每一個動作都要等待處理完畢後再回應,那麼勢必對於廣大用戶的使用者體驗大打折扣,因此這個過程如果有一個中間人幫我們處理掉先來後到的流程,那麼是不是我只要將要進行的動作交給中間人即可,而背後處理的服務商則透過中間人依序處理,處理
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
給定一個陣列,分別代表每位顧客的抵達時間和廚師準備時間。請問平均的等待時間是多少? 等待時間定義為客人開始真正用餐的時間 - 客人抵達的時間。演算法為計算廚師的出餐時間。
※ 生產者和消費者模式 定義: 生產者和消費者在同一時間內共同存取某一個資料空間。生產者負責生成數據並將其放入共享空間,消費者負責從共享空間中取走數據進行處理。兩者之間互不相干,也不須互相知道對方的存在。 共同存取資料空間:生產者和消費者共享同一個資料空間。這個空間通常是緩衝區或隊列,用於在它
Thumbnail
插隊,是忽視他人的權益,而為利己的滿足個人的行為,為什麼有人要插隊?
Thumbnail
嘿,你知道採購人員是怎麼讓公司運轉順利的嗎?如果你對這個角色充滿好奇,想了解他們的日常工作,那麼你來對地方了。今天,我們就來揭開採購人員工作的神秘面紗,帶你深入了解這個職位的方方面面,讓你在考慮這個職業時有個清晰的認識。
社會化的歷程,以前比較活在自己世界的時候,習慣性地會把所有念頭攪和在一起,視線模糊,不想看得太清楚,用直覺對決外界。然後因為不管是自己的渴望或是無可避免地要與社會互動,開始學習那套理性又條理化的思維和表達,把細緻的差別區分開來以與人應對,變成看得太清楚,視線又太銳利。
Thumbnail
(1)事前LINE主動發出通知,無論何處,所有人均可掌握值勤排班內容  (2) 換班前幾天收到通知,可事先安排交代事務給下回值勤人員,讓值勤業務能順利實施
Thumbnail
身為消費者,你有沒有過這樣的經驗:才剛完成結帳,下一秒緊接著被店員以「下一位!」或「結帳請往前喔」此類提醒聲,催促得手忙腳亂倉皇逃離現場的經驗?超商、加油站、得來速,通常在這些地方消費,我可以感受到這些店員們的眾多工作守則其中一項應該是:結帳後三秒鐘內接待下一組顧客。
Thumbnail
在Python中,queue是一個非常有用的模块。 它提供了多種佇列(queue)實現,用於在多線程環境中安全地交換信息或者數據。 佇列(queue)是一種先進先出(FIFO)的數據結構,允許在佇列的一端插入元素,另一端取出元素。(FIFO 是First In, First Out 的縮寫)
Thumbnail
本篇討論專案經理收到任務後的基本動作,還有如何挖掘出簡報文字之下客戶真正想要的東西。
Thumbnail
同樣是餐飲業,客人消費的心理大不相同 每個人一定都有去餐廳點餐的經驗,有不少都改成線上點餐縮減前台服務人員,但最基礎的菜單版面都還是以推薦套餐-單點-特色料理-甜點飲品這種順序做排列組合,那如果在小吃攤看到這種菜單,會讓你想點餐還是缺乏興趣呢? 舉個例子,你去買鹹酥雞看到菜單上第一行寫著,套
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
給定一個陣列,分別代表每位顧客的抵達時間和廚師準備時間。請問平均的等待時間是多少? 等待時間定義為客人開始真正用餐的時間 - 客人抵達的時間。演算法為計算廚師的出餐時間。
※ 生產者和消費者模式 定義: 生產者和消費者在同一時間內共同存取某一個資料空間。生產者負責生成數據並將其放入共享空間,消費者負責從共享空間中取走數據進行處理。兩者之間互不相干,也不須互相知道對方的存在。 共同存取資料空間:生產者和消費者共享同一個資料空間。這個空間通常是緩衝區或隊列,用於在它
Thumbnail
插隊,是忽視他人的權益,而為利己的滿足個人的行為,為什麼有人要插隊?
Thumbnail
嘿,你知道採購人員是怎麼讓公司運轉順利的嗎?如果你對這個角色充滿好奇,想了解他們的日常工作,那麼你來對地方了。今天,我們就來揭開採購人員工作的神秘面紗,帶你深入了解這個職位的方方面面,讓你在考慮這個職業時有個清晰的認識。
社會化的歷程,以前比較活在自己世界的時候,習慣性地會把所有念頭攪和在一起,視線模糊,不想看得太清楚,用直覺對決外界。然後因為不管是自己的渴望或是無可避免地要與社會互動,開始學習那套理性又條理化的思維和表達,把細緻的差別區分開來以與人應對,變成看得太清楚,視線又太銳利。
Thumbnail
(1)事前LINE主動發出通知,無論何處,所有人均可掌握值勤排班內容  (2) 換班前幾天收到通知,可事先安排交代事務給下回值勤人員,讓值勤業務能順利實施
Thumbnail
身為消費者,你有沒有過這樣的經驗:才剛完成結帳,下一秒緊接著被店員以「下一位!」或「結帳請往前喔」此類提醒聲,催促得手忙腳亂倉皇逃離現場的經驗?超商、加油站、得來速,通常在這些地方消費,我可以感受到這些店員們的眾多工作守則其中一項應該是:結帳後三秒鐘內接待下一組顧客。
Thumbnail
在Python中,queue是一個非常有用的模块。 它提供了多種佇列(queue)實現,用於在多線程環境中安全地交換信息或者數據。 佇列(queue)是一種先進先出(FIFO)的數據結構,允許在佇列的一端插入元素,另一端取出元素。(FIFO 是First In, First Out 的縮寫)
Thumbnail
本篇討論專案經理收到任務後的基本動作,還有如何挖掘出簡報文字之下客戶真正想要的東西。
Thumbnail
同樣是餐飲業,客人消費的心理大不相同 每個人一定都有去餐廳點餐的經驗,有不少都改成線上點餐縮減前台服務人員,但最基礎的菜單版面都還是以推薦套餐-單點-特色料理-甜點飲品這種順序做排列組合,那如果在小吃攤看到這種菜單,會讓你想點餐還是缺乏興趣呢? 舉個例子,你去買鹹酥雞看到菜單上第一行寫著,套