消息隊列-簡單介紹Java消息隊列,什么是消息隊列,作用以及常見消息隊列


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

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

消息隊列應用場景

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

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


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


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

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

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

消息隊列種類及特點:
    rabbitMQ穩定,可靠,數據一致,支持多協議,有消息確認,性能一般,基於erlang語言,二次開發困難.
    kafka高吞吐,高性能,快速持久化,無消息確認,無消息遺漏,可能會有有重復消息,依賴於zookeeper,成本高.
    ZeroMQ靈活快速,不支持持久化,需要大量編碼來實現穩定可靠.
    ActiveMQ不夠靈活輕巧,對隊列較多情況支持不好.
    rocketMQ性能好,高吞吐,高可用性,支持大規模分布式.

    ZeroMQ小而美,RabbitMQ大而穩,Kakfa和RocketMQ快而強勁。

 

轉載自https://blog.csdn.net/qq_43843725/article/details/95113436


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM