面试官:RabbitMQ有哪些工作模式?
哈喽!大家好,我是小奇,一位不靠谱的程序员
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新
一、前言
今天又、又、又来面试了,还是老规矩,上来先做两张面试题,然后填半斤表,什么血型、什么星座的,话说我不知道自己什么血型,只能空着了。。。
今天这公司环境还可以,大厅可以看到外面的世界,我已经想好了以后该去哪里摸鱼了(前提是能够面试上)。。。
在用完了两根签字笔后,重要填写完了这半斤表,然后交给面试官,等待面试。。。
二、面试
面试官:小奇是吧,过来路上远吗
我:不远,也就二里地吧。。。
面试官:行,那咱们直接进入主题,我看你这简历上写着对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有哪些工作模式?的更多相关文章
- RabbitMQ的六种工作模式
一.基于erlang语言: 是一种支持高并发的语言 RabbitMQ的六种工作模式: 1.1 simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消 ...
- RabbitMQ的六种工作模式总结
最近学习RabbitMQ的使用方式,记录下来,方便以后使用,也方便和大家共享,相互交流. RabbitMQ的六种工作模式: 1.Work queues2.Publish/subscribe3.Rout ...
- RabbitMQ 五种工作模式
官网介绍:https://www.rabbitmq.com/getstarted.html 五种工作模式的主要特点 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获 ...
- SpringBoot整合RabbitMQ实现六种工作模式
RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现. 前提概念 生产者 消息生产者或者发送者,使用P表示: 队列 消息从生产端发送到消费端,一定要通过队列转发,使 ...
- 『假如我是面试官』RabbitMQ我会这样问
1. 为什么你们公司选择RabbitMQ作为消息中间件 在消息队列选型时,我们调研了市场上比较常用ActiveMQ,RabbitMQ,RocketMQ,Kafka. RabbitMQ相对成熟稳定,这是 ...
- RabbitMQ工作模式
------------恢复内容开始------------ RabbitMQ基本概念: Producer:生产者(消息的提供者) Consumer:消费者(消息的使用者) Message:消息(程序 ...
- 面试官:Redis的共享对象池了解吗?
我正在面试间里焦急地等待着,突然听到了门外的脚步声,随即门被打开,穿着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来. 面试官:"平时在工作中用过Redis吗?" 我:&q ...
- java面试一日一题:rabbitMQ的工作模式
问题:请讲下rabbitMQ的工作模式 分析:该问题纯属概念题,需要掌握rabbtiMQ的基础知识,同时该题也是切入MQ的一个引子: 回答要点: 主要从以下几点去考虑, 1.rabbitMQ的基本概念 ...
- rabbitmq官方的六种工作模式
1.RabbitMq1.1介绍RabbitMQ是一个消息代理:它接受并转发消息.你可以把它当成一个邮局:当你想邮寄信件的时候,你会把信件放在投递箱中,并确信邮递员最终会将信件送到收件人的手里.在这个例 ...
随机推荐
- DDD 领域驱动设计之面向对象思想
面向对象 面向对象是一种对世界理解和抽象的方法.那么对象是什么呢? 对象是对世界的理解和抽象,世界又代称为万物.理解世界是比较复杂的,但是世界又是由事物组成的. 正是这样的一种关系,认识事物是极其重要 ...
- Android 12(S) 图形显示系统 - BufferQueue的工作流程(十一)
题外话 我竟然已经写了这个系列的十一篇文章了,虽然内容很浅显,虽然内容很枯燥,虽然内容也许没营养,但我为自己的坚持点赞! 一.前言 前面的两篇文章,分别讲解了Producer的处理逻辑和queue b ...
- 4月4日 python学习总结 os pickle logging
1.序列化和反序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling. 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickl ...
- 玩转OpenMLDB社区,四张角色卡待解锁
关于OpenMLDB OpenMLDB 是一个开源机器学习数据库,提供企业级 FeatureOps 全栈解决方案.OpenMLDB 致力于闭环解决 AI 工程化落地的数据治理难题,并且已经在上百个企业 ...
- CTF--Do you like xml
题目链接:http://47.94.221.39:8008/ 扫描目录得到/.DS_Store文件 下载文件,直接用脚本进行还原操作. https://github.com/lijiejie/ds_s ...
- BUAA 2021-2022毛概复习资料
2021-2022年毛概期末主观题复习范围,参考2022版教材和课程组官方PPT,原文太过敏感,所以贴出代码大家自己run #include <stdio.h> unsigned arti ...
- mac 安装shell
https://blog.csdn.net/weixin_41937552/article/details/108565705
- Mybatis的XML文件调用静态方法
如果需要在Mapper文件中调用静态方法,需要 <choose> // 需要静态方法返回true还是false <when test="@staticClass@stati ...
- 什么是 Ribbon负载均衡?
(1)Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具. (2)Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等.简单的说,就是在配 ...
- JDBC的全称是什么?
Java DataBase Connectivity,java数据库连接