RabbitMQ各種交換機機制,代碼實踐篇

點擊上方Java後端技術之路”,選擇“置頂或者星標

與你一起成長

本文主要是實踐建議大家下載下來代碼走一遍,代碼地址在文末。

問題:

首先帶着下面幾個問題來展開討論:

1、有哪幾種交換器(channel)。

2、direct交換器一個隊列綁定多個交換器會什麼樣子。

3、direct交換器一個連接多個信道會什麼樣子。

4、direct交換器多個消費者消費一個隊列會如何。

5、direct交換器多個隊列綁定一個信道會如何。

6、topic交換器如何訂閱,*#什麼區別。

7、Fanout交換器什麼機制。

下面我們根據代碼實踐來討論上面幾個問題。

客戶端與RabbitMQ通訊

1、引入jar

 

2、建立連接

創建連接工廠 設置地址 設置端口號 需要登錄的設置密碼 新建連接

3、創建信道channel

生產者消費上面12步驟代碼都一樣,只有3步驟會有部分差異,具體如下:

生產者:創建信道 綁定交換路由 綁定隊列(非必鬚生產者消費者兩遍誰做都可以) 發佈消息

消費者:創建信道 在信道中綁定交換器 設置隊列 綁定路由 聲明一個消費者 正式指定隊列消費

 

 

 

針對疑問做解答

疑問1:有哪幾種交換機

共有四種 direct,fanout,topic,headers,其中 headers(幾乎和 direct 一樣)不實用,可以忽略。

具體可以參見上篇文章:MQ第一節

疑問2:direct交換器一個隊列綁定多個交換器會什麼樣子。

一個隊列綁定多個交換器,會收到每個交換器的消息。

代碼演示如下:

生產者:

消費者:

運行結果:

 

從實例中明顯發現收到了每個路由的消息。

疑問3:direct交換器一個連接多個信道會什麼樣子

一個連接多個信道每個連接都會收到消息。

疑問4:direct交換器多個消費者消費一個隊列會如何。

多個消費者消費一個隊列會輪詢消費。也就是多個消費者消費的數據加起來等於一個隊列裏面的數據

 

疑問5:direct交換器多個隊列綁定一個信道會如何。

每個隊列都會收到信道的所有消息

疑問6:topic交換器如何訂閱,*與#什麼區別。

*匹配一個,#匹配多個

疑問7:Fanout交換器什麼機制。

廣播機制,隊列綁定一個信道會收到所有消息,和綁定全部信道是一樣的。

代碼地址

建議大家down下來代碼跑一邊理解一下。

https://github.com/SunSmileAZY/mq-study


往期推薦:

消息中間件(MQ)與AMQP

MQ消息隊列常見面試題詳解


面試精選

MQ消息隊列常見面試題詳解

Redis常見面試題詳解

備戰2020,十四道Mybatis常見面試題!!!

十二道Spring常見面試題

Spring 常見面試題一,助你2020 ,come on

微服務面試題 - Spring Cloud

備戰2020面試題,Java面試題下(鎖、AQS、線程池)

備戰2020,Java基礎面試題上(String、各種集合、hashMap)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章