# 幾個名詞
- 消息
消息( Message ),在計算機底層,是一種數據傳輸單位。
- 隊列
隊列( Queue ),一種數據結構,具有先進先出、有先后順序的特性。
- 消息隊列
消息隊列( Message Queue , MQ ),一種**隊列結構**的存儲中間件,即,它本身是一個存儲容器,而內部數據的存放結構是隊列。
- 生產者
生產者( Producer ),它生成消息,并將消息存入消息隊列中。
- 消費者
消費者( Consumer ),它從消息隊列中取出消息,進行處理,處理完成之后,該消息從隊列中刪除。**有些地方也會叫做訂閱者。**
# 聯想理解
- 廚師、餐架、服務員
廚師做飯,做好以后放到餐架。
服務員從餐架上拿飯,送到客人手中。
**這里,廚師是生產者、服務員是消費者、餐架是消息隊列**
這樣有好處:廚師做好飯后,只要放到餐架上,就可以繼續做飯(效率高),不用等待服務員過來(服務員可能正在被客人訓斥,過不來)
- 下單功能
用戶下單之后,后臺需要將訂單信息入庫。
另外,可能還有這些操作:短信提醒、郵件提醒、APP推送、公眾號推送…
這些任務,每一件都需要執行網絡請求,假定分別耗時 200 ms,而每一個任務,都需要順序執行。
則,整個下單處理,將有 800 ms 以上耗時,**體驗非常不好**。
若,將此結構進行以下優化:
> 訂單數據入庫成功,將后面的任務,分別放入各自任務的消息隊列中,放入成功,立即返回響應,則大大提高響應速度。
另一邊,由消費者程序按一定規則從消息隊列中得到任務,并一一執行。