面试官:RabbitMQ有哪些工作模式?

简介: 本文讲解RabbitMQ的工作模式。

一、前言



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


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


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


二、面试



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


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


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


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


三、RabbitMQ工作模式



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


我:RabbitMQ一般有五种工作模式。


1:简单模式

2:work工作模式

3:pub/sub发布订阅模式

4:Routing路由模式

5:Topics主题模式


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


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


16.png


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


17.png


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


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


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


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


18.png


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


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


19.png


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


20.png


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


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


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


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


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


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


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


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


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


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


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


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


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


四、总结



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


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



相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件
RabbitMQ的 RPC 消息模式你会了吗?
【9月更文挑战第11天】RabbitMQ 的 RPC(远程过程调用)消息模式允许客户端向服务器发送请求并接收响应。其基本原理包括:1) 客户端发送请求,创建回调队列并设置关联标识符;2) 服务器接收请求并发送响应至回调队列;3) 客户端根据关联标识符接收并匹配响应。实现步骤涵盖客户端和服务器的连接、信道创建及请求处理。注意事项包括关联标识符唯一性、回调队列管理、错误处理及性能考虑。RPC 模式适用于构建可靠的分布式应用程序,但需根据需求调整优化。
|
14天前
|
消息中间件 大数据 Kafka
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
本文深入探讨了消息队列的核心概念、应用场景及Kafka、RocketMQ、RabbitMQ的优劣势比较,大厂面试高频,必知必会,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
|
2月前
|
消息中间件 存储 canal
阿里面试:canal+MQ,会有乱序的问题吗?
本文详细探讨了在阿里面试中常见的问题——“canal+MQ,会有乱序的问题吗?”以及如何保证RocketMQ消息有序。文章首先介绍了消息有序的基本概念,包括全局有序和局部有序,并分析了RocketMQ中实现消息有序的方法。接着,针对canal+MQ的场景,讨论了如何通过配置`canal.mq.partitionsNum`和`canal.mq.partitionHash`来保证数据同步的有序性。最后,提供了多个与MQ相关的面试题及解决方案,帮助读者更好地准备面试,提升技术水平。
阿里面试:canal+MQ,会有乱序的问题吗?
|
4月前
|
消息中间件 开发者
【RabbitMQ深度解析】Topic交换器与模式匹配:掌握消息路由的艺术!
【8月更文挑战第24天】在消息队列(MQ)体系中,交换器作为核心组件之一负责消息路由。特别是`topic`类型的交换器,它通过模式匹配实现消息的精准分发,适用于发布-订阅模式。不同于直接交换器和扇形交换器,`topic`交换器支持更复杂的路由策略,通过带有通配符(如 * 和 #)的模式字符串来定义队列与交换器间的绑定关系。
74 2
|
4月前
|
消息中间件
RabbitMQ广播模式
RabbitMQ广播模式
67 1
|
4月前
|
消息中间件 缓存 负载均衡
复盘女朋友面试4个月的RocketMQ面试题
这篇文章复盘了面试中关于RocketMQ的高频题目,包括架构组成、使用姿势、功能原理及高级特性,并强调了理解这些实现机制对于面试成功的重要性。
复盘女朋友面试4个月的RocketMQ面试题
|
4月前
|
负载均衡 前端开发 API
我希望在系统设计面试之前知道的 12 种微服务模式
我希望在系统设计面试之前知道的 12 种微服务模式
|
4月前
|
消息中间件 应用服务中间件 网络安全
rabbitMQ镜像模式搭建
rabbitMQ镜像模式搭建
|
5月前
|
消息中间件 传感器 负载均衡
消息队列 MQ使用问题之如何配置一主一从的同步复制模式
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ使用问题之如何配置一主一从的同步复制模式
|
5月前
|
消息中间件 存储 Kafka
MetaQ/RocketMQ 原理问题之RocketMQ DLedger融合模式的问题如何解决
MetaQ/RocketMQ 原理问题之RocketMQ DLedger融合模式的问题如何解决