RabbitMQ有5種工作模式
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
RabbitMQ是實(shí)現(xiàn)了高級消息隊(duì)列協(xié)議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務(wù)器是用Erlang語言編寫的,而集群和故障轉(zhuǎn)移是構(gòu)建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。 RabbitMQ是實(shí)現(xiàn)了高級消息隊(duì)列協(xié)議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務(wù)器是用Erlang語言編寫的,而群集和故障轉(zhuǎn)移是構(gòu)建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。 RabbitMQ是一套開源(MPL)的消息隊(duì)列服務(wù)軟件,是由 LShift 提供的一個(gè) Advanced Message Queuing Protocol (AMQP) 的開源實(shí)現(xiàn),由以高性能、健壯以及可伸縮性出名的 Erlang 寫成。 simple模式消息產(chǎn)生消息,將消息放入隊(duì)列 消息的消費(fèi)者(consumer) 監(jiān)聽 消息隊(duì)列,如果隊(duì)列中有消息,就消費(fèi)掉,消息被拿走后,自動(dòng)從隊(duì)列中刪除(隱患 消息可能沒有被消費(fèi)者正確處理,已經(jīng)從隊(duì)列中消失了,造成消息的丟失,這里可以設(shè)置成手動(dòng)的ack,但如果設(shè)置成手動(dòng)ack,處理完后要及時(shí)發(fā)送ack消息給隊(duì)列,否則會造成內(nèi)存溢出)。 work工作模式消息產(chǎn)生者將消息放入隊(duì)列消費(fèi)者可以有多個(gè),消費(fèi)者1,消費(fèi)者2同時(shí)監(jiān)聽同一個(gè)隊(duì)列,消息被消費(fèi)。C1 C2共同爭搶當(dāng)前的消息隊(duì)列內(nèi)容,誰先拿到誰負(fù)責(zé)消費(fèi)消息(隱患:高并發(fā)情況下,默認(rèn)會產(chǎn)生某一個(gè)消息被多個(gè)消費(fèi)者共同使用,可以設(shè)置一個(gè)開關(guān)(syncronize) 保證一條消息只能被一個(gè)消費(fèi)者使用)。 publish/subscribe發(fā)布訂閱每個(gè)消費(fèi)者監(jiān)聽自己的隊(duì)列; 生產(chǎn)者將消息發(fā)給broker,由交換機(jī)將消息轉(zhuǎn)發(fā)到綁定此交換機(jī)的每個(gè)隊(duì)列,每個(gè)綁定交換機(jī)的隊(duì)列都將接收到消息。 routing路由模式消息生產(chǎn)者將消息發(fā)送給交換機(jī)按照路由判斷,路由是字符串(info) 當(dāng)前產(chǎn)生的消息攜帶路由字符(對象的方法),交換機(jī)根據(jù)路由的key,只能匹配上路由key對應(yīng)的消息隊(duì)列,對應(yīng)的消費(fèi)者才能消費(fèi)消息; 根據(jù)業(yè)務(wù)功能定義路由字符串 從系統(tǒng)的代碼邏輯中獲取對應(yīng)的功能字符串,將消息任務(wù)扔到對應(yīng)的隊(duì)列中。業(yè)務(wù)場景:error 通知;EXCEPTION;錯(cuò)誤通知的功能;傳統(tǒng)意義的錯(cuò)誤通知;客戶通知;利用key路由,可以將程序中的錯(cuò)誤封裝成消息傳入到消息隊(duì)列中,開發(fā)者可以自定義消費(fèi)者,實(shí)時(shí)接收錯(cuò)誤; topic 主題模式
消息產(chǎn)生者產(chǎn)生消息,把消息交給交換機(jī) 交換機(jī)根據(jù)key的規(guī)則模糊匹配到對應(yīng)的隊(duì)列,由隊(duì)列的監(jiān)聽消費(fèi)者接收消息消費(fèi) 該文章在 2024/3/29 23:32:15 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |