消息隊列-簡單介紹Java消息隊列,什麼是消息隊列,作用等

天天說隊列, 項目請求數據不能及時處理時,就一言不合通過隊列啊, 心中那個是媽賣批,那麼到底什麼隊列呢,隊列有到底運用於哪些運用場景呢;

先說說應用場景吧, 不知道有啥作用,看多了含義,原理什麼的還是頭疼;

消息隊列應用場景

1.比如你的服務器一秒能處理100個訂單,但秒殺活動1秒進來1000個訂單,持續10秒,在後端能力無法增加的情況下,你可以用消息隊列將總共10000個請求壓在隊列裏,後臺consumer按原有能力處理,100秒後處理完所有請求(而不是直接宕機丟失訂單數據)

使用消息隊列能夠使關鍵組件頂住增長的訪問壓力,而不是因爲超出負荷的請求而完全崩潰 , 就是防止雪崩。某一時刻數據量突然增大,起到一個緩衝。


2.一般都是異步的,不要求立即響應。打個比喻,你同時只能做一件事,但是你有一個ToDoList,每做完一個,在ToDoList中劃掉一個,有新的分給你的任務,就放到ToDoList後面,這個ToDoList差不多就是一個隊列了,隊列就是一種數據結構,減輕的不止是數據庫的壓力。


3.可用於一些不及時的操作,耗時的操作,比如發送郵件、圖片處理等等。

就是將比較耗時而且不需要即時(同步)返回結果的操作作爲消息放入消息隊列。同時由於使用了消息隊列,只要保證消息格式不變,消息的發送方和接收方並不需要彼此聯繫,也不需要受對方的影響,即解耦和。

4.項目功能軟件的正常使用中,並不需要去刻意的使用消息隊列處理,而是當出現性能瓶頸時採用,否則盲目的使用消息隊列 , 增加維護和開發的成本,反而影響開發進度而得不償失。

 

什麼是消息隊列

java中,代碼執行的通信交互產生的數據都可以稱之爲消息

隊列則是:按順序的進行排隊等待

通俗的講消息隊列:就是 程序按順序的"入隊" > 等待 >  "出隊" 執行任務; 

實際應用中, 你可以這樣理解: 它就是一個容器, 這一邊做 "入隊" 操作(把數據放進去), 不需要立即處理。

等有空,或者等程序空閒的時候,按先進先出的原則"出隊"(把數據取出來) ,然後一一執行; 

 

消息隊列的作用

使用消息隊列的 10 個理由 

1.解耦 

2.冗餘 

3.擴展性 

4.靈活性和峯值處理能力 

5.可恢復性 

6送達保證 

7.排序保證 

8.緩衝 

9.理解數據流 

10.異步通信 

具體解釋,可閱讀該文:  

http://www.oschina.net/translate/top-10-uses-for-message-queue 

 

如果還不懂,可看下一篇轉載的文章;

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章