2 回答

TA貢獻1784條經(jīng)驗 獲得超7個贊
消息隊列有無數(shù)開源實現(xiàn),一般沒必要自己實現(xiàn)。zmq也好rabbitmq也好甚至redis也好,找一個合適的裝上用就行
就好像rdbms/nosql一樣
技術都是解決問題的,消息隊列解決的是將突發(fā)大量請求轉(zhuǎn)換為后端能承受的隊列請求,比如你的服務器一秒能處理100個訂單,但秒殺活動1秒進來1000個訂單,持續(xù)10秒,在后端能力無法增加的情況下,你可以用消息隊列將總共10000個請求壓在隊列里,后臺consumer按原有能力處理,100秒后處理完所有請求(而不是直接宕機丟失訂單數(shù)據(jù))
所以說首先別自己實現(xiàn)消息隊列(在你用過各種消息隊列,還看過一兩份源碼之前),其次沒有合適的需求別用消息隊列,YAGNI

TA貢獻2016條經(jīng)驗 獲得超9個贊
來個個人通俗的解釋吧。
消息隊列,顧名思義 首先是個隊列。
隊列的操作有入隊
和出隊
也就是你有一個程序在產(chǎn)生內(nèi)容然后入隊(生產(chǎn)者)
另一個程序讀取內(nèi)容,內(nèi)容出隊(消費者)
這是最最基本的概念。
我想你應該是缺乏一個使用場景。
當你不需要立即獲得結(jié)果,但是并發(fā)量又不能無限大的時候,差不多就是你需要使用消息隊列的時候。
比如你寫日志,因為可能一個客戶端有多個操作去寫,又有很多個客戶端,顯然并發(fā)不能無窮大,于是你就需要把寫日志的請求放入到消息隊列里,在消費者那邊依次把隊列中產(chǎn)生的日志寫到數(shù)據(jù)庫里。
至于怎么實現(xiàn)消息隊列,其實你本身一個普通的隊列就行呀~看你需要什么附加功能而已。
添加回答
舉報