RabbitMQ的工作隊(duì)列模式
1.Work queues——工作隊(duì)列模式
?? ?1、一條消息只會(huì)被一個(gè)消費(fèi)者接收;
?? ?2、rabbit采用輪詢的方式將消息是平均發(fā)送給消費(fèi)者的;
?? ?3、消費(fèi)者在處理完某條消息后,才會(huì)收到下一條消息。
2.Publish/subscribe——發(fā)布訂閱模式
?? ?1、每個(gè)消費(fèi)者監(jiān)聽(tīng)自己的隊(duì)列。
? ? 2、生產(chǎn)者將消息發(fā)給broker,由交換機(jī)將消息轉(zhuǎn)發(fā)到綁定此交換機(jī)的每個(gè)隊(duì)列,每個(gè)綁定交換機(jī)的隊(duì)列都將接收到消息
??publish/subscribe與work queues有什么區(qū)別。
?? ??? ?1)work queues不用定義交換機(jī),而publish/subscribe需要定義交換機(jī)。
?? ??? ?2)publish/subscribe的生產(chǎn)方是面向交換機(jī)發(fā)送消息,work queues的生產(chǎn)方是面向隊(duì)列發(fā)送消息(底層使用默認(rèn)交換機(jī))。
?? ??? ?3)publish/subscribe需要設(shè)置隊(duì)列和交換機(jī)的綁定,work queues不需要設(shè)置,實(shí)質(zhì)上work queues會(huì)將隊(duì)列綁定到默認(rèn)的交換機(jī) 。
?? ?相同點(diǎn):
? ? ? ? 實(shí)質(zhì)工作用什么 publish/subscribe還是work queues。建議使用 publish/subscribe,
?? ??? ?發(fā)布訂閱模式比工作隊(duì)列模式更強(qiáng)大,并且發(fā)布訂閱模式可以指定自己專(zhuān)用的交換
機(jī)。
3.Routing——路由模式
1、每個(gè)消費(fèi)者監(jiān)聽(tīng)自己的隊(duì)列,并且設(shè)置routingkey。
?? ?2、生產(chǎn)者將消息發(fā)給交換機(jī),由交換機(jī)根據(jù)routingkey來(lái)轉(zhuǎn)發(fā)消息到指定的隊(duì)列。
Routing模式和Publish/subscibe有啥區(qū)別?
?? ?Routing模式要求隊(duì)列在綁定交換機(jī)時(shí)要指定routingkey,消息會(huì)轉(zhuǎn)發(fā)到符合routingkey的隊(duì)列。
?? ?路由模式指定多個(gè)routingkey可以實(shí)現(xiàn)發(fā)布訂閱模式
4.Topics——路由通配符模式
?? ?1、每個(gè)消費(fèi)者監(jiān)聽(tīng)自己的隊(duì)列,并且設(shè)置帶統(tǒng)配符的routingkey。
?? ?2、生產(chǎn)者將消息發(fā)給broker,由交換機(jī)根據(jù)routingkey來(lái)轉(zhuǎn)發(fā)消息到指定的隊(duì)列。
隊(duì)列綁定交換機(jī)指定通配符:統(tǒng)配符規(guī)則:
?? ??? ?中間以“.”分隔。符號(hào)#可以匹配多個(gè)詞,符號(hào)*可以匹配一個(gè)詞語(yǔ)。
Topic模式更多加強(qiáng)大,它可以實(shí)現(xiàn)Routing、publish/subscirbe模式的功能
5.Header 模式
?? ?header模式與routing不同的地方在于,header模式取消routingkey,使用header中的 key/value(鍵值對(duì))匹配隊(duì)列
6.RPC——遠(yuǎn)程調(diào)用模式
?? ?RPC即客戶端遠(yuǎn)程調(diào)用服務(wù)端的方法,使用MQ可以實(shí)現(xiàn)RPC的異步調(diào)用,基于Direct交換機(jī)實(shí)現(xiàn),流程如下:
?? ?1、客戶端即是生產(chǎn)者就是消費(fèi)者,向RPC請(qǐng)求隊(duì)列發(fā)送RPC調(diào)用消息,同時(shí)監(jiān)聽(tīng)RPC響應(yīng)隊(duì)列。
?? ?2、服務(wù)端監(jiān)聽(tīng)RPC請(qǐng)求隊(duì)列的消息,收到消息后執(zhí)行服務(wù)端的方法,得到方法返回的結(jié)果
?? ?3、服務(wù)端將RPC方法 的結(jié)果發(fā)送到RPC響應(yīng)隊(duì)列
?? ?4、客戶端(RPC調(diào)用方)監(jiān)聽(tīng)RPC響應(yīng)隊(duì)列,接收到RPC調(diào)用結(jié)果。
?? ?解決:RPC遠(yuǎn)程調(diào)用中的響應(yīng)問(wèn)題