RabbitMQ中的4種交換機消息發送機制測試

在這裏插入圖片描述
前面有幾篇文章簡單介紹了一下RabbitMQ的基礎概念:

一、RabbitMQ基礎概念詳解

二、RabbitMQ、ActiveMQ、Kafka之間的比較

  它是一款基於Erlang語言開發得開源消息中間件,目前被大量應用於企業級得開發中,我目前就職的公司使用的消息中間件也是RabbitMQ,所以還是打算寫個筆記再炒一下RabbitMQ的剩飯。

一、安裝RabbitMQ

1.進入dockerHub官網搜索rabbitmq的鏡像包:

https://hub.docker.com/_/rabbitmq?tab=tags

2.選擇帶有management標籤的鏡像包,這種鏡像包帶有web管理界面,
在這裏插入圖片描述

在linux中輸入下面命令拉取該版本的鏡像包:

docker pull rabbitmq:3-management

拉取鏡像包結束之後,再輸入命令docker images查看rabbitmq鏡像包是否已經成功下載了
在這裏插入圖片描述
確定鏡像包獲取成功之後,輸入以下命令啓動rabbitmq服務(如果對於docker的命令不太熟悉可以查看一下另外一篇文章:

Docker常用命令

docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 95bc78c8d15d(這個是IMAGE ID)

-d:後臺啓動
-p:暴露端口
--name:自定義啓動的服務名稱
5672:客戶端通信端口
15672:管理界面端口

然後輸入命令查看rabbitmq服務是否啓動成功:

docker ps

在這裏插入圖片描述
確認服務啓動成功之後,我們在瀏覽器中輸入rabbitmq所在的服務器地址:15672就可以訪問rabbitmq的web管理頁面了:
在這裏插入圖片描述
使用默認的賬號:guest和默認的密碼:guest登錄此管理面板:

在這裏插入圖片描述

二、測試RabbitMQ的路由機制

  在另外一篇文章中:RbbitMQ基礎概念詳解中有介紹RabbitMQ中的消息路由一般通過4種交換機來實現:

​ 1.)Direct exchange 直連交換機

​ 2.)Fanout exchange 扇形交換機

​ 3.)Topic exchange 主題交換機

​ 4.)Headers exchange 首部交換機

  對於4種交換機得介紹這裏就不再贅述了,其中Headers exchage交換機並不是使用得路由鍵進行判斷,而是使用AMQP這種高級消息隊列協議來進行判斷。在實際應用中,Headers exchange使用的並不算多,所以這裏主要測試前三種類型交換機。

1.添加交換機

在這裏插入圖片描述
  分別添加好3種類型的交換機:

在這裏插入圖片描述

2.添加消息隊列

在這裏插入圖片描述
  分別添加好消息隊列

在這裏插入圖片描述

3.將交換機與消息隊列進行綁定

在這裏插入圖片描述
  然後繼續將該交換機與添加得其他幾個消息隊列進行綁定,最終綁定結束後,綁定關係如下:
在這裏插入圖片描述
  使用相同得方式,將剩餘得2種交換機與新添加得4個消息隊列進行綁定……

  這裏需要注意得是exchange.topic這種交換機與消息隊列得綁定,以爲此種交換機可以進行模糊匹配,所以它與消息隊列得綁定形式如下:

在這裏插入圖片描述
  綁定工作完成之後,我們可以在RabbitMQ的管理面板上發一下消息測試一下:

4.在web管理面板上發消息進行測試

4.1 首先測試exchange.direct交換機

  首先測試exchange.direct交換機,點擊進入該交換機,然後發消息進行測試:

在這裏插入圖片描述
  然後點擊進入Queues頁面:

在這裏插入圖片描述
  由於exchange.direct是完全匹配的,所以只有magic隊列收到了消息,此時我們點擊列表中的magic消息隊列:
在這裏插入圖片描述
  點擊Get Messages可以獲取該消息隊列收到的消息

4.2 測試exchange.fanout交換機

  點擊進入exchange.fanout交換機的頁面,然後發送消息:

在這裏插入圖片描述
  然後點擊進入Queues消息隊列頁面,發現與exchange.fanout交換機綁定的4個消息隊列都收到了消息,這也是exchange.fanout爲什麼被稱爲“扇形交換機”的原因,因爲它非常像一個喇叭,它以“廣播”的形式與消息隊列進行匹配發送。
在這裏插入圖片描述
4.3 測試exchange.topic交換機

  點擊進入exchange.topic交換機頁面,選擇Routing key(路由鍵),併發送消息:

在這裏插入圖片描述
  然後點擊Queues進入消息隊列頁面:

在這裏插入圖片描述
  我們發現以magic開頭的消息隊列收到消息的數量都+1了,這種交換機就是對路由鍵進行了模糊匹配,我們發送消息的時候選擇的Routing Keymagic,它與exchange.topic交換機進行綁定的時候我們綁定的Routing Key規則是magic.#,而滿足magic.#這種匹配規則的消息隊列除了magic還有magic.newsmagic.emps兩個,所以此時發送的消息這三個消息隊列都收到了。另外我們可以測試一下*.news這個匹配規則(爲了方便查看測試效果,我將隊列中的消息都清空了):

  同樣點擊進入exchange.topic交換機頁面,然後發送消息:

在這裏插入圖片描述

  然後進入Queues頁面:

在這裏插入圖片描述
  發現所有的消息隊列都收到了消息,分析原因:

  magic.news首先滿足magic.#匹配規則,同時又滿足*.news匹配規則,所以四個消息隊列都收到了消息,如果我們只想匹配*.news這種規則的消息隊列,則可以通過下面這種形式進行消息的發送:
在這裏插入圖片描述
  然後進入Queues消息隊列頁面:

在這裏插入圖片描述
  發現只有兩個以.news結尾的消息隊列收到了消息。這種結果是符合預期的,因爲4種消息隊列中只有magic.newsjavamagic.news兩種消息隊列滿足.news匹配規則。

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