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

一、前言

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

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

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

二、面试

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

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

面试官:行,那咱们直接进入主题,我看你这简历上写着对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. VUE3 之 状态动画 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:不用羡慕别人,每个人都有属于自己的人生道路,重要的是在前进道路上遇见阻碍时,如何去积极的面对并解决. 言归正传,今天我们来聊聊 VUE 的状态动画. 2. 状态动画 2.1 数 ...

  2. 5分钟了解Redis的内部实现快速列表(quicklist)

    快速列表简介 在Redis3 .2版本之前,存储列表(list)数据结构使用的是压缩列表(ziplist)和链表(linkedlist),当列表元素个数比较少并且每个元素占用空间比较小的时候,使用压缩 ...

  3. 获取ajax动态加载的多个a标签中的 点击的那个a标签对应的值

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 常用正则表达式与python中的re模块

    正则表达式是一种通用的字符串匹配技术,不会因为编程语言不一样而发生变化. 部分常用正则表达式规则介绍: . 匹配任意的一个字符串,除了\n * 匹配任意字符串0次或者任意次 \w 匹配字母.数字.下划 ...

  5. 造成panic_oom问题的测试代码

    写一个内核模块,来构造内核模块出现panic oom,主要采用vmalloc函数: #include <linux/module.h> #include <linux/mm.h> ...

  6. 《浅谈产品》——加油APP的平台是如何做的

    最近油价又上涨了,我们平常去加油站加油用到"某滴加油"."某团加油"这些APP,一般情况下加200的油,各种优惠下来,最终只需要付170左右就可以了,基本是优惠 ...

  7. SpringBoot中的日志使用:

    SpringBoot中的日志使用(一) 一:日志简介: 常用的日志接口 commons-logging/slf4j 日志框架:log4j/logback/log4j2 日志接口屏蔽了日志框架的底层实现 ...

  8. Java 中怎么获取一份线程 dump 文件?

    在 Linux 下,你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件.在 Windows 下,你可以按下 Ctrl + Break 来获取 ...

  9. Redis 的持久化机制是什么?各自的优缺点?

    Redis 提供两种持久化机制 RDB 和 AOF 机制: 1.RDBRedis DataBase)持久化方式: 是指用数据集快照的方式半持久化模式) 记录 redis 数据库的所有键值对,在某个时间 ...

  10. 学习zabbix(五)

    前言 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix组件主要分两个: zabbix-server和zabbix-agent.支持的监控协议有I ...