是基於 Java 中的 JMS 消息服務規范實現的一個消息中間件。
1.系統解耦
采用中間件之后,就可以完美解決上述中因為耦合可能導致的問題。系統 A 不用去
關心下層服務調用方的問題。
2. 異步調用
當一個請求處理需要經過 3 個系統的時候,A 和 B 系統處理時間 3ms 時間,這個是非
常快的,但是 C 系統可能需要 30s 才能處理完。這樣整個業務處理時間因為 C 系統導
致非常慢。
比如我們在美團或者餓了嗎下單,那么在下單的時候,后台需要通過后台處理:訂單支
付->賬戶扣款->創建訂單->通知商家准備菜品->安排騎手
這個時候我們對於扣款和創建訂單來講對於時效性要求強,處理效率也比較高。對於通
知商家准備菜品和安排騎手來講時效性的要求不是很高,處理時間也可能會稍長。這個
時候就可以使用 mq 進行異步處理,先處理完前面的業務,然后反饋給用戶,之后再通
過 mq 處理通知商家准備菜品和安排騎手
3.流量削峰
大部分時候,每秒幾百請求,一台機器就足夠了,但是為了抗那每天瞬時的高峰,硬是
部署了 10 台機器,每天就那半個小時有用,別的時候都是浪費資源的。
但是如果你就部署一台機器,那會導致瞬時高峰時,一下子壓垮你的系統,因為絕對無
法抗住每秒幾千的請求高峰。此時我們就可以用 MQ 中間件來進行流量削峰
所有機器前面部署一層 MQ,平時每秒幾百請求大家都可以輕松接收消息。一旦到了瞬
時高峰期,一下涌入每秒幾千的請求,就可以積壓在 MQ 里面,然后那一台機器慢慢
的處理和消費。等高峰期過了,再消費一段時間,MQ 里積壓的數據就消費完畢了。