生动形象的让你学会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应该有所帮助。

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