通俗的說,就是一個容器踱侣,你把消息丟進去粪小,不需要立即處理。然后有個程序去從你的容器里面把消息一條條讀出來處理抡句。
起到暫存的作用探膊。列如mysql一次只能同時寫入100,先把1000存入消息隊列待榔。
業(yè)務(wù)系統(tǒng)觸發(fā)短信發(fā)送申請逞壁,但短信發(fā)送模塊速度跟不上,需要將來不及處理的消息暫存一下锐锣,緩沖壓力腌闯。就可以把短信發(fā)送申請丟到消息隊列,直接返回用戶成功雕憔,短信發(fā)送模塊再可以慢慢去消息隊列中取消息進行處理姿骏。
我是這樣理解的:比如,你在簡書注冊了斤彼,簡書要通知老板有人注冊了——重點來了分瘦,通知老板這件事和你無關(guān)蘸泻,或者說,你并不關(guān)心嘲玫!你只關(guān)心注冊是否成功悦施!因此,消息隊列在此隆重登場去团!——你可以把所有和用戶無關(guān)的全部插進去抡诞!正確的是,立馬返回給用戶注冊成功土陪,再插昼汗!
讓我們再站在更抽象的高度來審視這個問題吧。那就是——返回在前旺坠,操作在后——當然乔遮,你要確保這些操作在邏輯上和返回是無關(guān)的——而這,如何解耦取刃,正是體現(xiàn)一個程序員的功底之處了。