粉丝531获赞5059

好,同学们,接下来我们就开始今天的第二章, rabbit mq 的快速入门, 在这一章当中啊,我们会去了解一下 rabyten q, 并且呢去安装它,然后我们会给大家介绍一下 rabytem q 当中的常见消息模型,最后呢我们还会带着大家动手呢,去写代码,看一看 rabyten q 它如何实现这种意步的消息通讯。 好,那接下来我们就进入第一部分啊, rabbit mq 的一个简单认识和安装。 rabbit mq 啊,是一个基于啊浪语言开发的开源消息通讯中年间, 而阿浪语言大家可能不太熟,这是一个面向并发的变成语言,天生就是为了分布式系统来设计的,而 rabbit mq 基于他来 完成,自然就具备了这些个特征,那因此他的一个性能,吞吐量都还是相对来讲不错的啊。但 rabomq 最擅长的其实是消息的可靠性,稳定性,整个系统的这种高可用啊。 那这里呢是 mq 的一个官方网站,我已经提前打开了啊,大家可以看到啊,这个网站啊,这上面有一群的兔子,那另外呢,这边呢还会有一些文档,那大家呢,如果想要去学习 mq 最好呢基于这个文档去进行学习啊, 好,那现在我们再回到 ppt 啊啊,那在这里呢,我们就带大家去安装一下 rabyten q 了啊,安装方式呢,可以参考课前资料, rabyten q 的部署指南, 我们打开看见资料可以看到呢,这里有一个文档,然后咱们 q 不输指南,我们把它打开。 好,那接下来呢,我们就来完成这个部署,这个部署呢有单击部署和集训部署两种方式,我们呢就来看单击部署就行了,我们将在三斗司训练机当中利用刀砍来进行部署,因为这种方式是最简单最方便的嘛。 啊,那第一步肯定是要获取刀壳的镜像了,那么这个镜像大家可以去直接 po 拉取,也可以从科研资料当中去导入这个踏包,而导入的方式我们之前已经讲过了啊,就是利用这个刀壳 low 的命令来完成导入,对吧? 那么下边呢,我们就来打开我们的训练机,我们通过 docker amidis 先查看一下我们本地印象。啊, 好,可以看到,我这里也没有 mq, 对不对?那接下来呢,我就按照刚才文档中所说把它导入一下,那我们打开, 哎,课前资料这里呢有一个套包,现在呢,我们把它上传上来啊,那上传到哪里呢?我们上传到这个 tmp 的目录吧,这临时目录嘛,我们把它拖上来。 好,我们可以看到一百多兆啊, 好,上传完成,完成以后,我们再次回到这个小控台,然后通过一个命令来安装啊,我们先进入天平部路看一眼,有的吧,怎么导入?同学们,命令是什么?告诉我 刀干什么 low 的,干啊,哎, mq 点踏,哎,很好啊,走 好。经过一番安装,我们发现导入成功了,我们通过 docker images 查看一眼,发, 发现这里导入了一个名为 rap mq 版本呢,是三杠 management 的这样一个镜像,已经成功导入了。好,那第一步我们就完成了,我们再次回到文档看一下, 导入了以后,下一步自然就是安装 mq 了,运行这个刀口 rad 命令吗?那这个命令呢?在这我已经给大家贴好了, dock run 杠一 杠一呢是给我们的 mq 设置一个黄金变量,黄金变量我这配了两个,一个是 user, 一个是 password, 也就是用户名和密码。将来我们需要去访问 mq 或者是登录他的管理平台,都需要用这个账号和密码, 再往下干个 name 呢,是给他起个名字,这块呢是配置主机名,不配呢,也没问题,但是如果将来做集群部署就要配这个东西了。杠批呢是他的端口映射,这里我们开放了两个端口啊,一 个是幺五六七二,这个呢是 raby 咱们 q 的管理平台的端口,他会给我们提供一个 ua 界面,我们去管理起来就非常方便了。第二个五六七二呢,是将来做消息通信的一个端口,也就是说我们将来发消息,收消息都要通过这个端口去建立连接。 杠地是后台运行,最后呢是镜像的名称。好,那下边呢,我们就把这个命令啊给他敲一下,我们回到下个控制台,然后在这呢进一个粘贴回车 好容器创建完成,我们通过刀砍 ps 查看一下是不是成功的启动起来了。启动起来以后呢,我们就可以去访问了啊,他端口我们刚才讲了,幺五六七二是他的什么端口啊?是不是空了台端口,所以我们只需要在浏览器里访问这个地址就能够看到了 啊,那现在呢,我们就打开浏览器,在这里输入训练基地地址啊,幺九二点幺六八点幺五零点幺零幺,端口呢是幺五六七二,大家记住这个端口啊, 好,回车可以看到呢,成功的进入了 raby temque 的管理界面了吧,这里啊要输入一个账号和密码,我们刚刚在刀口 rat 命令中啊,指定的是 it cast, 密码是一二三三二一,点击 log in, 这样呢就成功的登入了我们 rabbit mq 的一个管理平台了。同学们, 那么在这个界面当中有很多的东西啊,大家现在都不认识啊,没有关系,等一会呢,我们就会一一给大家介绍。那首先呢,这第一个界面叫 overview, 就是总懒,那么这个界面呢,主要就是 mk 的一些节点的一些详细信息,当前我们是单节点运行,没有集群吧,所以节点中只有一个,然后呢,后边是他的这个硬件的一个信息啊, 然后在这儿 connection, connection 就是连接,将来无论是消息的发布者还是消息的消费者,都应该跟我们的 mq 键连接吧,所以这个 connection 呢,就是连接, 而前头呢是一个通道,将来我们建立连接了以后,一定要创建一个前头通道, 然后生产者或者是消费者才能基于钱脑完成消息的发送或者是接收啊,所以你可以认为钱脑是 mq 当中做消息发送也好,接收也好等等各种操作的一个具体对象了啊,将来每一个连上来的人都应该去创建一个或多个通道啊,再往下呢, x 欠着,这个叫交换机,他是一个消息的路由器啊,就跟咱们那个教室里边的路由器交换机效果是类似的。然后 q 呢,就是对列了, 对列就是来做这个消息存储的啊,那现在呢,可以看到还没有任何的对列吧?刚才交换机看到还是有一些交换机的啊,但是没有对列 好,那最后奥特曼呢?是叫做管理,那么在这个界面当中,我们可以去管理当前这个呃用户信息啊,比方说我现在是不是有个用户叫 it 卡死他呀?那我还可以干什么呢?在这创建更多的用户, 比方说我现在要创建个用户,我只需要在这点击爱的 uzer, 然后在这呢给用户起个名字啊,比如说就叫李四,然后给他起个密码,比如说一二三,一二三,那这样一个新的用户信息就填好了,这里还可以给用户分配一个这个 呃角色啊,比如说艾特曼呢,是超级管理员啊,这里的 money 特呢,就是一个系统监控的啊等等,我们可以去选,比如说选艾特曼啊,超级管理员,那么这个信息呢,就成功的提入到这里了,最后点击艾的 user, 那么我们这个用户就添加成功了, 但是你发现啊,当我新增一个用户以后,他其实是没有任何访问权的,看到没有?没有 no access, 那这个是因为什么呢?这里有一个说明啊,大家可以看到叫做 virtue house, 虚拟主题 啊,虚拟主机啊,虚拟主机是什么呢?是我们 mq 当中的一种逻辑划分,将来我们会有很多个用户,对吧?那这个埃迪卡斯的用户,他来操作我们的 rabbit mq, 创建自己的队列,自己的交换 机等等,那么我们的李四用户也来做这些事,那这两个人在操作过程中是不是有可能产生冲突啊, 那为了避免这种问题的发生啊,我们就有一个叫 virtue house 虚拟主机的概念,那通过虚拟主机对不同的用户进行一个隔离,大家互相看不到对方的东西,这种呢就称之为多租户的一种处理了,对吧?是一种隔离,这就是虚拟主机的概念了, 虚拟主题目前啊默认只有一个,就是斜杠,那我们还可以通过在这玩手 houses 创建更多的虚拟主题,比如说添加一个新的名字呢,也可以随便取,比如说就叫杠, it cost, 然后在下边呢,还有这个虚拟主机的一些描述信息啊,你也可以写,也可以不写好,点击添加,你看一个新的虚拟主机是不是创建好了,现在我们再次回到 u 字界面,在这个界面当中呢, 我们可以看到艾迪卡斯用户具备杠和艾迪卡斯访问权限,而李四还是没有任何权限,而你点击用户信息了,就会进入用户的视力界面,你可以给他分配权限啊, 怎么分配呢?比如说我让他访问爱迪卡斯特,那这样呢,点击赛的 permission, 他就具备了对爱迪卡斯的这个虚拟主题的访问权了。那我们再次返回到优乐界面,可以看到是不是有访问权了, 然后呢,我们还可以点击到交换机的界面来看一眼,在这个界面当中,你会发现啊,虚拟主机杠和 airicast 他们所具备的信息是不是一样的, 也就是说呢,这里面虽然名称是冲突的,但是呢,因为虚拟主机不同,他们是不是给被隔离开了?一般情况下,同学们,我们回答的跟你见面每一个用户应该由自己独享的虚拟 主题啊,同学们能理解的意思吧,好比方说我的艾迪卡斯的,我点进去我就让他只具备杠的防御拳,不具备这个艾迪卡斯的防御拳,那这样一来,他们两个的业务是不是就被隔离开了,互相就看不到对方的这个内容了? 那这就是我们的这个多租户以及这个虚拟主机的一个隔离了。行了,那 mq 的安装就完成了,下面呢,我们回到 ppt 来看一下我们这个 mq 的一个整体结构啊,刚才其实我们已经给大家做了简单介绍了,这边 population 呢,是我们的消息发送者,看修门呢,自然就是我们消息的消费者, 他们的意思呢,将来会把消息发送到 x change, 也就是我们的交换机,交换机呢,负责路由,再把消息投递到 q 对列,对列负责斩存小。 而后呢,我们的消费者再去从队列当中获取消息,然后处理消息,整体呢,就是这样子的啊,那你会发现呢,这里有一个叫 vershow house 的一个概念虚拟主机吗?将来我创建了一个用户以后, 他呢会有自己的一个虚拟主机,再创业,新的用户再有虚拟主机,那各个虚拟主机之间是相互隔离的,看不到的,这样可以避免干扰,这就是整体 mq 的一个架构了啊, 好,那最后呢,我们来做一个总结, rabbitom q 当中的几个概念,第一呢是 channel, 是操作 mq 的工具啊,你做消息的发送也好,接收也好,都必须要用的 channel。 x change 是消息陆游,将来消息发送给他,他在陆游给对列。对列呢?当然就是缓存消。 记得了 versa house 的虚拟主题是对 q x 限制等等这些东西资源。那个逻辑分组啊,将来呢?给它隔离起来,不同用户可以访问不同的虚拟主题。好,那我们这节课的内容就到这里。

rabbit mq 的死性队列是什么?首先呢,咱们要清楚啊, rapmq 中的死性队列,他其实还是一个普通队列,只不过呢,他是用来接受一些特殊的消息, 而这些消息呢,官网称之为死信。而一个消息啊,想要变为死信,那官网一共提供了三种方案。第一个呢,是咱们的队列达到了这个消息的各处限制,再发送消息,那么这个队列中的最早的消息就会变为死信。 那么第二个呢,是消息被消费者屡晒或者 nack, 并且呢, reque 设置为了 fouse, 不允许再次放回队列,那么消息也会源于死刑。 第三个呢,就是消息啊,在咱们的队列中设置了生存时间,但是呢,在这期间内没有被消费也会变为死信。而消息变为死信后呢,如果队列绑定了死信交换机,那么就会被扔到咱们的死信交院机,并且 且陆游到死性对列,那么如果没有绑定死性救援机,那么死性会被直接丢弃。而死性的应用啊,其实有很多的,比如说大量的定时任务,如果用 cos 这种定时任务框架去实现是比较麻烦的,咱们需要有一堆的定时任务,那么如果用死性对列呢,效果会更加优雅。 再或者一些消息消费失败,或者是未被消费者消费到的消息呢,也可以给予死信去做一个留存或是一些补偿的操作,哈哈哈哈,哎呀,腰疼。

对于工作了几年的加瓦程序员,消息中间键是面试经常被问到的问题,一般面试官会根据你的简历和你了解的 mq 产品来问问题,所以面试之前你也不用把每个消息对列产品都准备一遍。 目前主流的消息对列产品有 ruby democo、 rocky democo、 卡不卡和 pasa。 比如下面的这个 rapidmoco 的问题该如何回答呢? ruby democo 的消息是如何进行路由的?好,那首先我们看一下 rapidoco 它的整体结构,有一个发布者,有一个消费者,中间是我们 ruby democo, 那么它里边有一个交换机, 然后有一个对列,那么交换机和对列之间啊,有一个绑定关系。好,那么有了这个整体结构以后,那专门扣的消息是如何进行录? 首先第一种情况啊,是最简单的一种情况,我们有一个发布者,有一个消费者,然后我们发布者把消息发布到对面上,那么这个时候没有指定交换机,它采用的是默认的交换机。 那么第二种情况就是我们有一个交换机,有两个对列,那么这两个对列呢,都和我们这个交换机进行了绑定,所以这个时候我们发布者发送一个消息的时候,这个消息会录入到这两个对列上, 也就是只要这个对列和这个交换机绑定了,那我们发送者发送消息的时候,交换机就会把这个消息分别投递到这两个对联上。好,那下面我们看一下。第三种情况, 我们有一个交换机,有两个对列,那么这两个对列和这个交换机之间的绑定关系是通过一个路由键进行绑定的,比如说上面 这个对列和我们交换机的绑定是通过一个 iro 这个路由键进行绑定,那下边这个对列和交换机绑定,它是用了 infoiro 和 woni, 哎,用这三个键进行绑定的,那我们现在比如说我发一个消息,如果我是用 iro 这个路由键来发送消息, 那这个时候他就会投递到上面这个对列和下边这个对列。因为上面这个对列是通过 lr 和交换机绑定,下面这个对列也有一个 l 这个路由键进行绑定,下边对列也和交换机用 lr 进行绑定了。所以此时我们通过 lr 这个路由键发送消息的时候, 它既可以投递到上面的对列,也可以投递到下边的对列,那现在如果我用个 infor 来作为路由键发送消息,那这个时候这个消息只可以投递到下边的这个对列上。好,那今 接下来我们看一下第四种情况,就是我们有一个交换机有两个对列,那么这个对列和它绑定的时候,它采用的录入键,哎是新号,点 orange 点新号, 那么这个呢是一个正则匹配信号,代表一个单词,所以我们这个路由键就是中间是 orange, 前后分别有一个单词,如果你满足这个路由键,那么这个时候就头对到我们上面这个对列, 比如说我们下边的这样一个路由 k, 它就满足这个路由键前面一个单词,后面一个单词中间是 orange, 那么你通过这个路由键发送消息的时候,就投递到我们上边这个对列。 好,那我们看一下这样一个路由键,他刚好满足我们这个路由键,所以你通过这个路由键投递消息的时候,他就会投递到我们下边这个对列。好,那我们看一下下边的这个路由键,我们的井号是代表多 多个单词,所以我们这个 lazy 后边有多个单词,那么这样的话呢,他就满足这个路由键,所以我们通过这个路由键发送消息的时候,他就会投入到下边的这个呢对列里边。好,那么这是我们第四种情况, 那么第五种情况就是我们这个图,我们有一个交换机,有两个对列,那么交换机和对列之间的关系呢?它是通过一个头部属性来进行绑定的,那么只要你这个头部属性满足这两个键值对的要求, 那就投递到我们上面这个队列,满足下边这两个键字队要求,就投递到下边这个队列。 那比如说我现在我在消息的这个头部,我设置一个 type 等于 s state 是等于零,那这个时候他就投递到我们下边的这个对列,当然他的这个头部匹配,他有 完全匹配,就是所有的键和值都匹配,还有任何一个键值匹配,那现在我们这个情况是所有的都匹配,还有种情况就是我们只需要有一个键值对匹配,他也可以投递,也就是说 type 和时代的只要有一个匹配,我们就可以把消息投运到这个对接上。 哎,那么他也有这种情况,有完全匹配和任何一个匹配。那么以上呢,就是我们 rumble co 的消息啊,是如何进行路由的?

raphanim q 是如何实现死性对列的?死性对列是 raphan m q 提供了一种特殊序列,处理那些无法被正常消费的消息。 那么通常呢,就有三种情况会产生实行对联。第一种呢就是消息被消费者明确拒绝。 第二种是消息达到了预设的过期时间,仍然呢没有被消费。第三点呢,就是消息由于对列已经达到最大长度限制而被丢弃。那么在 rap 的名 q 中实现实现对列呢?只需要给正常对列增加三个合金参数就可以了。 第一个呢,就是 d delete exchange, 指定了当前对列对应的死刑对列。第二个就是 d delete roting key, 指定消息转入死刑对列时的路由键。第三也就是 message t t l 消息在对联 中的过去时间。那么接下来呢,我们就可以往正常对立中发消息,如果消息满足了哪些条件,就会成为死性,并被重新发送到对应的死性对立中。而此时 rap 的名 q 会在消息的头部添加一些与死性相关的 补充信息,例如时间成为死性的原因原对列等等。应用程序呢,可以按需处理这些补充的消息。 那么最后呢,死性对立中的消息都是正常业务处理失败的消息。应用程序需要创建一个消费者来专门处理 这些被遗漏的消息,例如记录日志,发送警报等等,这样才能保证业务数据的完整性。关于这个问题的详细文字版解答,我已经整理进了一份八十万字的加瓦密斯大全,需要的小伙伴评论区置顶领取。

rapid m q 支持哪些消息模式? rap m q 支持多种消息传递模式,这些模式允许应用程序在不同的场景下进行灵活的消息交流。以下呢,是几种最常见的消息分发机制。第一, work q 工作序列机制, 不是 user 将消息呢,发送到 q, 多个 consumer 同时消费 q 上的消息,消息会均匀地分配给多个 consumer 处理。 第二,订阅发布机制。 producer 只负责将消息发送到 exchange 交换机上, exchange 呢,将消息转发到所有订阅的 q, 并由对应的 consumer 进行消费。 第三,基于内容录有机制。在电源发布机制的基础上呢,增加了一个 routing key, 并根据 routing key 判断一个是陷阱,将消息转发到 哪些特定的 q 上。第四,基于话题路由机制。在基于内容路由的基础上呢,对柔情 key 增加了模糊匹配的功能。另外呢, redmium q 还支持双向同步的 rpc 机制, 不过一般用的呢,是比较少的。这些消息模式呢,允许开发者呢,根据用程序的需求选择合适的消息通信方式,以满足不同的业务场景和可靠性要求。不同的模式可以用于构建各种类型的分布式系统和业务程序。

rabbit mq 面试通关攻略因为八二年工作经验的小伙伴面试被问到这一个问题,说如何来保证 rabbit 人民会的一个高可用? 所谓高可用呢,是指分布制系统中如果出现某些节点不可用的情况下,要保证客户端依旧还能够连接到其他的节点,而不至于影响业务的执行。那我主要从以下两个方面来实现高可用,一个是集群部署,一个是负载均衡。 那么 rap mq 呢,是用呃浪语言来编写的,而呃浪呢,天生是具备分布式的特性的,所以呢,我们不需要再引入类似于 d k 的这样的一个中间键来实现服务协调,那么他是使用呃浪点 cookie 来验证身份的,他通过二五六七二端口来实现集群。 那这个 cook 呢,就像一个暗号一样,只要你喊出精准明白,刷个六就知道是汤姆的粉丝。另外呢, rapidomico 它的集群的节点有 两种,一种是磁盘节点,一种是内存节点。那么在 rapidom q 的集成环境中,至少需要一个磁盘节点来持续换元数据,否则的话,当全部的内存节点崩溃的时候,就无法同步元数据了。下面呢,我来分享一下 rapid number q 的集成的模式,那么分别是普通的集成模式和镜像集成模式, 那么在普通的急救模式下,不同的急救之间呢,会相互同步原数据,而不会同步消息的内容。那么如图所示, 对列 a 的消息呢,只存在 a 节点上, b 节点和 c 节点呢,同步了对列的 a 的原数据,但是呢,没有同步对列中的具体内容。 那假如生产者连接的节点呢,是 c 节点,我们要将消息通过交换机 a 路由到对立 a, 最终呢,消息就会转发到 a 级别上来存储,因为对立 a 呢,存储在 a 级别上,那同理呢,如果消费者连接的节点 是 b 节点,那同样也要从对立 a 上拉取消息,那么消息呢,就会从 a 节点转换到 b 节点,那么其他节点呢,只能起到一个路由的作用。这样做的好处呢,是可以去节约存储和同步数据的网络的开销,但如果需要保证对立的高可用,那这个时候呢,我们就需要用到镜像急救模式。 下面来看镜像解决模式,如图所示。其实呢,也非常好理解,在镜像对列模式下,消息内容会在所有的节点中进行同步,可用性能更高。不过呢,也有一定的副作用,因为系统性能会降低,尤其是在节点过度的情况下,会导致同步数据的代价也会增大。 那么在集军环境搭建成功以后呢,要保证高可用,还需要一个负载均衡组件,由负载均衡组件来实现路由。那么对于生产者或者消费者而言呢,我们需要有一个连接到 负载均衡组件的虚联 ip 地址就可以了。那么这个负载均衡组件呢,需要满足以下几个条件。第一个呢,它本身要有负载功能,它可以去监控集群中的节点的状态,那如果某个节点出现异常或者是发生故障,我们要能够把它剔除掉。第二个呢,为了提供可用性, 我们能够支持部署多个服务,能够自主的完成 max 的选举。第三个呢,我们 max 的节点呢,需要对外开放一个虚拟的 ip, 那么客户端呢,只需要连接到这个虚拟 ip, 就可以自动完成对真实 ip 的路由。 下面呢,我以 heblox 加上 kiplang 的一个组合来实现 rapidamq 的一个高可用,具体架构呢,如图所示。当然呢,我们实现高可用的方案还有很多,比如说我们可以使用 lvs, 使用 ngx 等等来实现负责均衡。关于 rapidamq 的高可用方案,我就分享这么多,那么我分享的这个方案不仅仅只是用 rapidamq, 其实还 它可以应用于大部分的分部式的高可用场景。一个应届城区面试可能没有什么实战经验,今天呢,被问到一个这样的面试题,说 rapid meq 是如何去实现消息漏油的,他一下子竟然不知道如何去组织语言了。那今天呢,给大家分享一下我的理解。另外呢,我把网机分享的视频全部整理成了一份了二十万字的文档, 后续还会年更,希望能够以此来提高各位粉丝的通过率。想获取的小伙伴可以在我的个人主页简介中找到。 rabbimq 呢,是一个基于 a m q p 协议实现的分布式中间键。那么 a m q p 的具体工作机制呢?是这样的, 首先生产者把消息发送到 rabbimq block 上的,一个是千级交换机上,而一个是千级交换机,会把说出的消息根据路由规则分发给绑定的队列。最后呢,再把消息投递给地面的这个队列的消费者, 从而去完成消息的异不同性,其中 x 禁止交换机呢,就可以去定义这个消息的路由规则,将消息去路由到指定的对列,然后对列呢,就是消息的载体,每个消息呢,可以根据路由规则路由到一个或者多个对列中, 完全 rapid mac 路由的核心的组件是 exchange 交换机,而消息的路由呢,又是由 exchange 类型的和帮点来决定的,帮点呢,是表示建立在队列和交换机之间的一个绑定关系,那么每个绑定关系呢,会存在一个绑定 key, 通过这种方式呢,相当于是在 x 信息交换机中建立了一个路由关系表。在每个生产者发送消息的时候,就需要声明一个 roting key, 也就是路由键。 x 信息呢,拿到我们的 roting key 之后,就会根据 roting key 和路由表中的绑 ting key 进行匹配,而匹配的规则呢,就是通过 x 禁警类型来决定的。那么在 rapid m q 中,默认有四种类型,常用的有三种,分别是 director and out 和 topic。 首先来看, director 叫做直连,也就是说是完整的匹配方式,它需要 roting key 和绑 ting key 完全一致,相当于是点对点的发送。 如图所示,如果发生了 rotting key 为 supreme 的消息,只有一个队列能够接受的消息。第二个呢,是 topic, 叫做主题。那么这种方式呢,通过设置通配符来动态匹配,类似于正则,就是用 roting key 去匹配 bonding key。 那绑定 k 呢,支持两个通配符。井号呢,代表的是匹配零个或者多个单词,星号呢,代表的是匹配不多不少一个单词。另外呢,绑定 k 是用点来隔开两个单词的,所以星和井呢,就相当于是正则表达式的一个作用。如图所示, 我们有四个队列呢,绑定在托比的类型的交换机中,而且呢,使用的是不同的绑定键。那如果我们发送的路程 kin 为九两点 a b c 点 j v m 的消息的话,那么只有一个队列能收到消息。 那如果我们发送的落地 k 为 sendel 点立体的消息的话,第二个对列和第三个对列都能收到消息。第三种呢,翻来 out 叫做广播,这种方式呢,是不需要设置落听 t 的,而且呢,他会把消息广播给绑定到当前 x 键启上的所有的对列上。如图所示,我们只需要发送消息到返利 out 的 x 键启上, 那么三个对列都能收到消息。目前主流的分布式中间键常见的有 rapidam q, 卡不卡和 rockadam q, 有的同学呢,可能对卡不卡比较了解,有的同学呢,可能对 rapidam q 也比较了解。不过在 miss 的时候呢, miss 官一般会问你用过的技术组件,我们可以通过 miss 的过程推演出你的学 能力以及对技术的掌握能力。这个方面能力如果还不错的话,我们接触一个新的 mq 的组件所消耗的学习成本也会比较小。因为五年工作经验的小伙伴在面试的时候被问到这样一个问题,谈谈你对 rap mq 架构员你的理解。 要回答这个问题呢,首先要知道 rapid meco 架构中的几个核心的角色,他们分别是 product, consumer, rock, connection, china, query, exchange, 房顶 rehost。 那么这些角色之间是如何协调工作的呢?下面呢,我们来看一下这样一个动画。首先呢是第一个和第二个 vlog 和 consumer, 那么分别是消息的生产者和消息的消费者,这是所有的消息中心键都有的两个角色,我在这里呢就不做过多介绍了,那重点来看呢?第三个叫 brok, 中文翻译过来呢叫做代理或者是中介。我们可以把 blog 理解成为是安装 rapid 门口的一个服务器,这就是一栋用来存储和转发消息的房子。 第四个呢就是 connect 型连接,那无论是生产者发送消息还是消费者接受消息,都必须要跟 blog 之间建立个连接, connect 型呢就相当于是 tcp 的长连接。第五个呢是天然通道, 如果所有的生产者发送消息和接通消息,每次都要去创建和释放 ttp 长连接的话,那么对于 block 来说肯定会造成很大的一个性能消耗,也会浪费时间。 所以呢,在 a m q p 协议里面呢,引入了一个千档的概念,它相当是一个虚拟的连接,这样的话,我们就可以在已经连接好的 t c p 长连接里面去创建或者是释放千档,这样的话就大大减少了资源的消耗。那不懂得千档呢是相互隔离的,每个千档呢都有自己 的编号,对于每个客户端的县城来说, china 就没必要去共享了,因为他们各自有自己的 china。 另外一个需要注意的是, china 是 rapidmak 原声 apr 里面最重要的一个编程接口,也就是说我们要定义交换机断裂绑定关系,发送消息、消费消息,教育的都是 china 接口上的方法。 第六个是快旅对列,他专门用来存储消息,那么快旅呢,也是生产者和消费者的一个纽带,生产者呢,发送消息或存到对列中,而消费者呢,也是从对列中的消费消息。 第七个呢是 x 欠几叫交换机,相当于是消息的路由器。那一个是欠几呢,不会存储消息,他只是做一件事情,就是根据规则来分发消息。第八个呢就是帮顶翻译过来叫绑定。那么一个是欠几和存储消息的队列呢,必须要建立一个绑定关系,并且呢每个队列都要指定一个特殊的 标识,那一个是晋级和队列呢,他是一个多对多的一个绑定关系,也就是说一个交换机的消息会漏油给多个队列,那么一个队列呢,也可以接收来自多个交换机的消息。在绑定关系建立之后呢,生产者发送消息到一个晋级,那么也会携带一个特殊的标识, 当这个标识跟绑定的标识匹配的时候呢,消息呢,就会发给一个或者多个符合规则的对列。最后一个呢就是 v houst, 他的全称叫做 v to houst 虚拟机,他为了去解决不同业务系统之间的一个消息隔离,也为了去节约硬件成本,所以呢,我们可以利用 labbimq 的 v houst 来实现资源的隔离和权限的控制。 那 vhos 的功能和其他编程语言中的 nisbens 是比较类似的。以上呢,就是我对 rapidmiko 架构原理的理解。

大家好,今天这个视频对 rabbit mq 的直接模式、主题模式、广播模式和延迟消息模式这四种基本操作进行一下演示。首先是直接模式 direct, 它使用的是 rabbit mq 默认的 exchange, 所以只要配置好对列就可以使用了。不用指定交换机和如停 k, 只需要指定对列,这是发送方对列名称,然后发送的消息。 然后我们这边对大家进行一下接受。好,我们来操作一下,可以看到这里可以正常接收到,也可以实现多个消费者从对列中获取数据。比如说我这边有两个消费者,两个接受方,重启一下, 可以看到我多次操作他的接受方式交替展示的,可以对他的流量进行一下分担。除了传输简单文本信息,还可以进行自定义对象的传输。比如我们这里 成了一个 user 对象,它需要实现这个序列化接口,也是直接发送。我们现在这是一个新的对联, director push object 使用的是这个对列,然后接收的时候,他就可以直接去对这个对象进行接收,可以看到我们这边可以成功的接收到,这是直接模式 debug 的。然后是主题模式 topic, 他不像这个直接模式, 直接模式只配这个对列就可以了。 topic 除了配对列以外,还需要 配置交换机和绑定对应的入定 k, 这三者的关系需要理清楚。入定 k 对应的是输入,对列的名称对应的是输出, 所以是在发送方指定入定 k, 然后数据通过 is 清洁,通过交换机传输到绑定的对应的对联上, 然后接收方再从对列中去获取数据。 red k 可以使用通配符型号或者井号, 信号代表一个单词,井号代表零个或多个,我们这里是零个或多个。就是说,呃,只要是以 top 一个点开头的,这个发送的这个肉鼎 k 的消息除了会被 这个对联接收,还会被他接收,因为 topic 点 a 这个入定 k 也是符合这个规则的。 topic a 我们看一下方法。好,这个是柔丁 k, 柔丁 k 是 top 小点 a, 我们可以呃直观的看到他最终会走到这个队里,然后刚才我们也说了, topic 点 a 也是包含在 top 小点心中的,所以说这个 topic 点哦, 这个队也会接收到,我们来认识一下。 好,我们可以看到这两个对联都介绍到了这一个,我们用 topic 点二这个肉丁 k 去发送,应该是只有这个 topic all 这条消息 可以看到,确实是 topic all, 这个队列接收到了这条消息。接下来是广播模式 find out, 配置时和这个主题模式是类似的,不过是,不过区别是不用配置这个柔婷 k, 但是在发送的时候需要注意一下它这个 第二个参数必须传一个,我们可以传一个工作部串,因为如果不传的话,他就只有两个参数,两个参数的话他就走到默认的直接模式去了,然后就会报错,他走这一个交换机会会把消息发送到这个交换机对应的两个对列中, 翻奥的 a, 翻奥的 b, 他的介绍版本。最后是 延迟消息模式。延迟消息交换机这里使用的是 custom exchange, 这个名字可以自己指定,然后定义一个延迟对列以及绑定一个 朱婷 k, 我们来看一下发送的这个是延迟对列的角 换机,然后这入定 k, 这个是发送的消息, 我们需要实现这里边的这个方法,然后给他设置一个 dele 三千,代表的是小雨延迟三秒,收到小雨后,然后会答应 我们来测试一下,我们看到已经发送了,好,这里接收了四十九,五十二,我们再点一下, 应该三秒。好了。上面就是对 rapid mq 的基本操作的一个演示,希望呢对大家的工作学习有所帮助,感谢观看下个视频,再见。