博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ中的4种交换机消息发送机制测试
阅读量:3947 次
发布时间:2019-05-24

本文共 2294 字,大约阅读时间需要 7 分钟。

在这里插入图片描述

前面有几篇文章简单介绍了一下RabbitMQ的基础概念:

  它是一款基于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 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匹配规则。

转载地址:http://iphwi.baihongyu.com/

你可能感兴趣的文章
android 图库语言更新
查看>>
android camera拍照/录像后查看图片/视频并删除所有内容后自动回到camera预览界面
查看>>
android 图库中对非mp4格式的视频去掉"修剪"功能选项
查看>>
how to disable watchdog
查看>>
android SDIO error导致wifi无法打开或者连接热点异常的问题
查看>>
android USB如何修改Serial Number or SN?
查看>>
android 用svn管理的版本编译出来有问题
查看>>
android 如何用jar包代替java代码编译
查看>>
android 数据连接关闭的情况下如何让彩信发不出去
查看>>
android 编辑彩信,加入几页铃声,预览暂停界面,铃声名字不见了
查看>>
android 在新建短信时,加入名称为","(英文逗号)的联系人时,应用崩溃的修改
查看>>
android 关于LCD背光调节渐变过程引起背光闪烁问题
查看>>
android 保存具有不同前缀的同一号码分别为A和B,用其中一个呼叫,通话记录一直显示另一个联系人名字的问题
查看>>
android 在手机中预置联系人/Service Number
查看>>
android 系统语言为英语时,Contacts联系人名字含有特殊前缀后缀(Dr. Mr. Lt等)时的相关问题处理
查看>>
android 短信下,添加联系人,进入联系人多选界面出现联系人电话号码晃动的问题
查看>>
android 对一个合并后的联系人选择编辑,手机屏幕会缓慢变暗后再进入编辑界面的问题
查看>>
正确学习javascript。困惑的指南
查看>>
SERO幻影社区的背景怎么样?几大主流隐私币种技术分析!
查看>>
SERO目前具备的十大技术特点
查看>>