哈喽!大家好,我是小奇,一位不靠谱的程序员
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新

一、前言

今天又、又、又来面试了,还是老规矩,上来先做两张面试题,然后填半斤表,什么血型、什么星座的,话说我不知道自己什么血型,只能空着了。。。

今天这公司环境还可以,大厅可以看到外面的世界,我已经想好了以后该去哪里摸鱼了(前提是能够面试上)。。。

在用完了两根签字笔后,重要填写完了这半斤表,然后交给面试官,等待面试。。。

二、面试

面试官:小奇是吧,过来路上远吗

我:不远,也就二里地吧。。。

面试官:行,那咱们直接进入主题,我看你这简历上写着对RabbitMQ非常有了解是吗

我:何止是非常了解啊,那是相当的了解。。。

三、RabbitMQ工作模式

面试官:哦~,那你先说一下RabbitMQ有哪些工作模式吧

我:RabbitMQ一般有五种工作模式。
1:简单模式
2:work工作模式
3:pub/sub发布订阅模式
4:Routing路由模式
5:Topics主题模式

面试官:那你能说一下这些模式的原理与区别吗

简单模式:就是一个生产者一个消费者,中间通过一个队列直接连接。

work工作模式:就是有多个消费者消费队列里的消息,队列里的消息只能被一个消费者消费,这样多部署几个消费者,就可以缓解压力,比如过年的时候抢票,抢票成功后会给你发短信,这个时候就可以把发短信的任务放入队列里,然后有多个发短信的服务来处理队列里的任务。

pub/sub发布订阅模式:上面两种模式生产者的消息只能被一个消费者消费,不符合某些实际场景。

假如我们有一个国家气象局天气预报系统,这个时候他发送消息,其他的服务商,比如百度、网易、腾讯等公司都要从国家天气预报系统那里获取天气怎么办呢?

总不能百度获取了今天的天气其他公司就获取不了天气了吧,或者让国家天气预报系统给每个服务商都发送一次消息,那样显然是很麻烦的。

所以我们需要用到一个Exchange交换机角色来帮助我们把消息发给所有订阅我们的服务商。

Routing路由模式:路由模式就是交换机并不是给所有订阅他的队列发送消息了,而是根据路由键来确定应该给哪个队列发送消息,队列和交换机绑定的时候需要通过路由键,而生产者发送消息的时候也需要指定路由键,这样就可以确定给哪个队列发送消息了。

这里我们可以看到是给张三发送消息,所以只会给路由键为张三的那个队列发送消息。

Topics主题模式:主题模式就相当于模糊匹配,假如我想给姓张的发送消息,那么我就可以通过主题模式给所有姓张的发送消息。

面试官:你说的非常的全面,但是我记不住, 能用一个生活中的例子来描述一下吗

我:记不住就背,八股文哪有那么容易就记住的。。。

假如我今天去公司的会议室办公了,公司的会议室只有一根网线,那我自己一个人是不是就可以连接这根网线使用了呢,这个就是简单模式,一对一。

到了下午了张三也来会议室工作了,就一个网线怎么办,这时我想到了一个方法,我们两个一人插一会网线,比如我写邮件的时候不需要插网线,但是我发邮件的时候你就把网线让给我让我发出去,就这样我和张三每人用五分钟网线,这就是work工作模式,一根网线两个人用,其中一个人用了,另一个人就用不到了。

又过了一会李四也特么的来会议室了,这咋整,三个人用一根网线也太难了吧,但是聪明的我又想到了一个方法,我们找来了一个路由器,将网线接入路由器,然后我们每个人的笔记本电脑都连接路由器的无线网,这样我们都可以上网了,这就是pub/sub发布订阅模式,所有订阅路由器的笔记本电脑都可以收到流量,都可以上网哈。

过了一会网越来越卡了,我特么一看后台有8个人连接我们的无线网,原来我们没有设置密码,隔壁摸鱼的小姐姐连接无线逛淘宝呢,我一想不行啊,得设置一个密码吧,然后就设置了一个密码,所有知道密码的人才能连接路由器。这里就相当于Routing路由模式。

但是有人说密码太长了记不住,我特么说请把记住密码打上对勾谢谢,但是偏偏有人不打对勾天天问,我没办法了,我说不然就设置一个模糊密码吧,你们前三位都输入123,后面的数字随便输入,我这里判断前面是123的密码我都算正确,都让你们上网。这就相当于主题模式,这里的主题就是123。

面试官:哇塞,听你这么一讲,我有点永生难忘啊

我:请你不要迷恋哥,哥只是一个传说。。。

面试官:小伙子真厉害啊,一下子就把这几种模式讲的栩栩如生,你面试通过了,明天上岗吧

我:啊,这么急吗,我后面还有好多东西没有讲呢。

面试官:不着急,进来了以后慢慢听你讲,你不都已经找好摸鱼的地方了吗,到时候咱们一块去那里聊天

我:这都被你发现了啊。。。

四、总结

这里关于RabbitMQ还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

如果觉得我的文章还不错的话就点个赞吧

面试官:RabbitMQ有哪些工作模式?的更多相关文章

  1. RabbitMQ的六种工作模式

    一.基于erlang语言: 是一种支持高并发的语言 RabbitMQ的六种工作模式: 1.1 simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消 ...

  2. RabbitMQ的六种工作模式总结

    最近学习RabbitMQ的使用方式,记录下来,方便以后使用,也方便和大家共享,相互交流. RabbitMQ的六种工作模式: 1.Work queues2.Publish/subscribe3.Rout ...

  3. RabbitMQ 五种工作模式

    官网介绍:https://www.rabbitmq.com/getstarted.html 五种工作模式的主要特点 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获 ...

  4. SpringBoot整合RabbitMQ实现六种工作模式

    RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现. 前提概念 生产者 消息生产者或者发送者,使用P表示: 队列 消息从生产端发送到消费端,一定要通过队列转发,使 ...

  5. 『假如我是面试官』RabbitMQ我会这样问

    1. 为什么你们公司选择RabbitMQ作为消息中间件 在消息队列选型时,我们调研了市场上比较常用ActiveMQ,RabbitMQ,RocketMQ,Kafka. RabbitMQ相对成熟稳定,这是 ...

  6. RabbitMQ工作模式

    ------------恢复内容开始------------ RabbitMQ基本概念: Producer:生产者(消息的提供者) Consumer:消费者(消息的使用者) Message:消息(程序 ...

  7. 面试官:Redis的共享对象池了解吗?

    我正在面试间里焦急地等待着,突然听到了门外的脚步声,随即门被打开,穿着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来. 面试官:"平时在工作中用过Redis吗?" 我:&q ...

  8. java面试一日一题:rabbitMQ的工作模式

    问题:请讲下rabbitMQ的工作模式 分析:该问题纯属概念题,需要掌握rabbtiMQ的基础知识,同时该题也是切入MQ的一个引子: 回答要点: 主要从以下几点去考虑, 1.rabbitMQ的基本概念 ...

  9. rabbitmq官方的六种工作模式

    1.RabbitMq1.1介绍RabbitMQ是一个消息代理:它接受并转发消息.你可以把它当成一个邮局:当你想邮寄信件的时候,你会把信件放在投递箱中,并确信邮递员最终会将信件送到收件人的手里.在这个例 ...

随机推荐

  1. 在Windows 10 上安装使用binwalk

    Windows 10 推出的WSL 功能可以协助我们直接使用binwalk 分析Windows 内的文件 文章更新时间:2020年3月11日 一.WSL 准备 1.打开控制面板→程序和功能→启动或关闭 ...

  2. python3生成一个含有20个随机数的列表,要求所有元素不相同,并且每个元素的值介于1到100之间

    import random alist = random.sample(range(1,101),20) #random.sample()生成不相同的随机数 print(alist)

  3. VS Code通过code runner插件编译运行多个cpp文件 | 链接编译.h文件

    1.多个cpp文件在同一级目录 参考:https://jingyan.baidu.com/article/2f9b480d7ceb3d01ca6cc224.html 此时可通过修改Code Runne ...

  4. CF736D Permutations(伴随矩阵)

    CF736D Permutations(伴随矩阵) Luogu 题解时间 首先把边直接放进邻接矩阵, 很明显行列式的奇偶和方案数的奇偶一样. 设 $ A_{ i , j } $ 为矩阵的该行列的余子式 ...

  5. espnet中的transformer和LSTM语言模型对比实验

    摘要:本文以aishell为例,通过对比实验为大家介绍transformer和LSTM语言模型. 本文分享自华为云社区<espnet中的transformer和LSTM语言模型对比---以ais ...

  6. jQuery--表单的过滤

    1.表单过滤器的介绍 :input 所有表单元素(<input>/<select>/<textarea>/<button>) :text 文本框< ...

  7. memcached 最大能存储多大的单个 item?

    1MB.如果你的数据大于 1MB,可以考虑在客户端压缩或拆分到多个 key 中. 为什么单个 item 的大小被限制在 1M byte 之内? 简单的回答:因为内存分配器的算法就是这样的. 详细的回答 ...

  8. memcached 能接受的 key 的最大长度是多少?

    key 的最大长度是 250 个字符.需要注意的是,250 是 memcached 服务器端内 部的限制,如果您使用的客户端支持"key 的前缀"或类似特性,那么 key(前缀 + ...

  9. 如何实现集群中的 session 共享存储?

    Session 是运行在一台服务器上的,所有的访问都会到达我们的唯一服务器上,这 样我们可以根据客户端传来的 sessionID,来获取 session,或在对应 Session 不 存在的情况下(s ...

  10. flash的TotalFrames显示undefined

    通过js来操作flash的时候,获取到总帧数的是属性.TotalFrames,而不是属性TotalFrames().在asp.net中,js放在最后可以在一定程度上避免当前flash没有加载完,导致获 ...