通俗的說,就是一個(gè)容器,你把消息丟進(jìn)去,不需要立即處理。然后有個(gè)程序去從你的容器里面把消息一條條讀出來處理。
起到暫存的作用。列如mysql一次只能同時(shí)寫入100,先把1000存入消息隊(duì)列。
業(yè)務(wù)系統(tǒng)觸發(fā)短信發(fā)送申請(qǐng),但短信發(fā)送模塊速度跟不上,需要將來不及處理的消息暫存一下,緩沖壓力。就可以把短信發(fā)送申請(qǐng)丟到消息隊(duì)列,直接返回用戶成功,短信發(fā)送模塊再可以慢慢去消息隊(duì)列中取消息進(jìn)行處理。
我是這樣理解的:比如,你在簡(jiǎn)書注冊(cè)了,簡(jiǎn)書要通知老板有人注冊(cè)了——重點(diǎn)來了,通知老板這件事和你無關(guān),或者說,你并不關(guān)心!你只關(guān)心注冊(cè)是否成功!因此,消息隊(duì)列在此隆重登場(chǎng)!——你可以把所有和用戶無關(guān)的全部插進(jìn)去!正確的是,立馬返回給用戶注冊(cè)成功,再插!
讓我們?cè)僬驹诟橄蟮母叨葋韺徱曔@個(gè)問題吧。那就是——返回在前,操作在后——當(dāng)然,你要確保這些操作在邏輯上和返回是無關(guān)的——而這,如何解耦,正是體現(xiàn)一個(gè)程序員的功底之處了。