常用的消息隊列有rabbitmq娱仔、activemq、kafka慎恒、RocketMQ
異步處理:例如完成某種業(yè)務(wù)之后需要發(fā)短信發(fā)郵件通知時南窗,就可以采用一步的方式完成短信或郵件的通知。
流量削峰:常見的秒殺場景
(秒殺活動流量過大勾习,導(dǎo)致流量暴增浓瞪,最終可能導(dǎo)致應(yīng)用掛掉。一般會在應(yīng)用前端加入消息隊列來控制活動人數(shù)巧婶,假如消息隊列超過最大數(shù)量乾颁,應(yīng)該直接拋棄用戶請求或者跳轉(zhuǎn)到錯誤頁面。秒殺業(yè)務(wù)根據(jù)消息隊列中的請求信息在做后續(xù)的業(yè)務(wù)處理)
日志處理:最典型的就是kafka艺栈。因為kafka最初的設(shè)計就是用于日志處理英岭,大數(shù)據(jù)里面用的特別多,通過日志采集湿右,定時寫到kafka隊列诅妹,然后kafka隊列對日志數(shù)據(jù)進(jìn)行接收、儲存和轉(zhuǎn)發(fā)
應(yīng)用解耦:
例如:商品服務(wù)和訂單服務(wù)之間毅人。用戶下單后吭狡,訂單服務(wù)會通知商品服務(wù)。不使用MQ的情況是訂單服務(wù)調(diào)用商品服務(wù)的接口丈莺,這樣訂單服務(wù)和商品服務(wù)之間是耦合的划煮;使用MQ,訂單服務(wù)完成持久化處理缔俄,將消息寫入MQ消息隊列中弛秋,返回用戶訂單下單成功器躏,商品服務(wù)來訂閱這個下單的消息,采用拉或推的方式獲得下單信息蟹略,商品服務(wù)根據(jù)商品下單信息進(jìn)行商品庫存信息修改登失,這樣當(dāng)下單時商品服務(wù)不可用時,也不影響正常下單挖炬,這就完成了訂單服務(wù)和商品服務(wù)之間的解耦揽浙。