生動形象的讓你學會RabbitMQ

前言

之前想學mq這些東西,不過沒有一個直觀的圖像,認識起來總是感覺缺少了啥。
今天機緣巧合看到了一個牛逼的網站RabbitMQ Simulator,藉助它來學習MQ的三種模式感覺真的嗨!!

交換機的三種模式

1.Direct Exchange 根據route key 直接找到隊列
2.Topic Exchange 根據route key 匹配隊列
3.Fanout Exchange 不處理route key 全網發送,所有綁定的隊列都發送

RabbitMQ Simulator

RabbitMQ Simulator提供了一個可視化的界面,通過這種方式可以直觀瞭解MQ的拓撲結構,並且進行消息的發送。

Direct Exchange模式

在這裏插入圖片描述
如上圖,我們生產者生產routekey是helloword的數據,數據會經過交換機,交換機設置的是Direct模式,所以消息回去直接匹配bindkey是helloword的消息隊列。所以上圖中,【消息隊列】bindkey是helloword,所以可以收到消息。而【其他隊列】的bindkey是otherkey,所以接受不到消息。
而且從上面的結果看,消息是隨機分發給消費者1和消費者2的。
這樣看,是不是很生動形象了,哈哈。

Topic Exchange

在這裏插入圖片描述

這裏我們設置消息的routekey=hello.world
【消息隊列】的bindkey=hello.word
【其他隊列】的bindkey=hello.*(這裏使用通配符匹配)
然後發送一個消息,觀察情況。
在這裏插入圖片描述
看!好玩的事情發生了,一個消息經過交換機以後,會分發出一樣的消息給匹配bindkey的消息隊列,並且【其他隊列】這個也收到消息了。所以這個模式可以用通配符進行匹配哦,讀者感覺有趣可以自己試試手。

Fanout Exchange

在這裏插入圖片描述
在上圖的基礎上,先不改變交換機的模式(此時爲Topic),然後加多一個隊列【我是來搞笑的】和對於的消費者。
發起消息請求,可以觀察到。【我是來搞笑的】這個隊列沒有接受到消息。
這個是複合我們預期的,因爲它的bindkey=lovemq,這個bindkey和hellow.word是無法匹配的。
然後我修改一些交換機的模式,修改成Fanout模式,這個模式簡單粗暴,它不過你的消息裏面的routekey是否匹配隊列的bindkey,反正,就是發消息!
如下圖:
在這裏插入圖片描述

後記

這些學習我非常感興趣,也希望看來這個文章的朋友可以到這裏,畫一下圖,這樣對你認識MQ應該有所幫助。

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