一.基于erlang語言:是一種支持高并發(fā)的語言
RabbitMQ的六種工作模式:
1.1 simple簡單模式
消息產(chǎn)生著§將消息放入隊列
消息的消費者(consumer)監(jiān)聽(while)消息隊列,如果隊列中有消息,就消費掉,消息被拿走后,自動從隊列中刪除(隱患消息可能沒有被消費者正確處理,已經(jīng)從隊列中消失了,造成消息的丟失)應(yīng)用場景:聊天(中間有一個過度的服務(wù)器;p端,c端)
1.2 work工作模式(資源的競爭)
消息產(chǎn)生者將消息放入隊列消費者可以有多個,消費者1,消費者2,同時監(jiān)聽同一個隊列,消息被消費?C1 C2共同爭搶當(dāng)前的消息隊列內(nèi)容,誰先拿到誰負責(zé)消費消息(隱患,高并發(fā)情況下,默認會產(chǎn)生某一個消息被多個消費者共同使用,可以設(shè)置一個開關(guān)(syncronize,與同步鎖的性能不一樣)保證一條消息只能被一個消費者使用)
應(yīng)用場景:紅包;大項目中的資源調(diào)度(任務(wù)分配系統(tǒng)不需知道哪一個任務(wù)執(zhí)行系統(tǒng)在空閑,直接將任務(wù)扔到消息隊列中,空閑的系統(tǒng)自動爭搶)
1.3 publish/subscribe發(fā)布訂閱(共享資源)
X代表交換機rabbitMQ內(nèi)部組件,erlang消息產(chǎn)生者是代碼完成,代碼的執(zhí)行效率不高,消息產(chǎn)生者將消息放入交換機,交換機發(fā)布訂閱把消息發(fā)送到所有消息隊列中,對應(yīng)消息隊列的消費者拿到消息進行消費
相關(guān)場景:郵件群發(fā),群聊天,廣播(廣告)
1.4 routing路由模式
消息生產(chǎn)者將消息發(fā)送給交換機按照路由判斷,路由是字符串(info)當(dāng)前產(chǎn)生的消息攜帶路由字符(對象的方法),交換機根據(jù)路由的key,只能匹配上路由key對應(yīng)的消息隊列,對應(yīng)的消費者才能消費消息;
根據(jù)業(yè)務(wù)功能定義路由字符串
從系統(tǒng)的代碼邏輯中獲取對應(yīng)的功能字符串,將消息任務(wù)扔到對應(yīng)的隊列中業(yè)務(wù)場景:error通知;EXCEPTION;錯誤通知的功能;傳統(tǒng)意義的錯誤通知;客戶通知;利用key路由,可以將程序中的錯誤封裝成消息傳入到消息隊列中,開發(fā)者可以自定義消費者,實時接收錯誤;
1.5 topic主題模式(路由模式的一種)
星號井號代表通配符
星號代表多個單詞,井號代表一個單詞
路由功能添加模糊匹配
消息產(chǎn)生者產(chǎn)生消息,把消息交給交換機
交換機根據(jù)key的規(guī)則模糊匹配到對應(yīng)的隊列,由隊列的監(jiān)聽消費者接收消息消費