java面试一日一题:rabbitMQ的工作模式
问题:请讲下rabbitMQ的工作模式
分析:该问题纯属概念题,需要掌握rabbtiMQ的基础知识,同时该题也是切入MQ的一个引子;
回答要点:
主要从以下几点去考虑,
1、rabbitMQ的基本概念?
2、交换机的概念?
rabbitmq有以下几种工作模式,
简单模式
简单模式,是一个生产者对应一个消费者,mq起到一个代理的作用,
使用场景:可以作为一个队列来使用,比如发邮件功能,生产者把要发送的邮件交给MQ,发邮件服务从MQ中获取邮件进行发送,很好的解耦特性的体现
工作队列模式
工作队列模式,是一个生产者对应多个消费者的情况,多个消费者之间是竞争的关系,也就是会消费同一个队列中的消息,所有的消费者加起来消费的消息是生产者产生消息的总和;
应用场景:一个消费者消费不过来的情况下,可以使用工作队列的模式,多个消费者从多个队列消费,前提是消息不确保有序性;
发布/订阅模式
一个消费者产生的消息同时向多个消费者投递,也就是说每个消息者都可以拿到所有的消息进行消费;要使用fanout类型的交换机;
应用场景:在购物场景下,生成一个订单,下游要进行支付、发货邓操作,这时把消息投递到MQ,支付服务、发货服务都订阅MQ,这样每个服务都可以拿到所有的消息进行消费
路由模式
消费者有选择性的接收消息,那么如何区分自己要接收那种类型的消息那,答案是通过路由键,在消费者将队列绑定到交换机时需要指定路由键,同时生产者在向mq发生消息的时候也会指定路由键;要使用direct类型的交换机;
使用场景:当某个消费者需要消费某类消息,比如消费key为redmi1的消息,那么就可以使用该模式
主题模式
根据主题去接收消息,这里的主题指的是某种类型,在路由键的基础上增加匹配的功能,使用#匹配一个或多个词,使用*仅匹配一个词,很像sql中的like功能,同时生产者需要指定路由键;要使用topic类型的交换机;
使用场景:结合上面的例子,现在要消费key为redmi1 redmi2 redmi3的消息,使用多个路由键的情况路由模式便不满足,那么可以使用主题模式使用redmi#,这样以redmi的消息都会由特定的消费者消费;
从上面又可以引申出rabbitmq中交换机的类型,常用的就是上面提到的3种,fanout、direct 、topic。
java面试一日一题:rabbitMQ的工作模式的更多相关文章
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- java面试一日一题:讲下在什么情况下会发生类加载
问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- java面试一日一题:java中垃圾回收算法有哪些
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...
- java面试一日一题:java线程池
问题:请讲下java中的线程池 分析:在面试中经常问到线程池的问题,要掌握其基本概念,使用方法,注意事项等,引申下tomcat中默认的线程数是多少 回答要点: 主要从以下几点去考虑, 1.为什么要使用 ...
- java面试一日一题:讲对mysql的MVCC的理解
问题:请讲下对mysql中MVCC的理解 分析:这个问题要回答的是对MVCC的理解,以及MVCC解决了什么问题这几个方面入手. 回答要点: 主要从以下几点去考虑, 1.什么是MVCC? 2.MVCC用 ...
- java面试一日一题:java的类加载过程
问题:请讲下java的类加载机制及过程 分析:该问题主要考察对JVM加载类的机制及过程,延申出的问题是为什么使用双亲委托模型,有什么办法可以打破双亲委托吗: 回答要点: 主要从以下几点去考虑, 1.类 ...
- java面试一日一题:binlog undolog redolog的区别
问题:请讲下mysql中binlog.undolog.redolog三种日志的区别 分析:mysql中这三种日志很常见,也是面试中涉及比较多的方面,要理解清楚这三种日志的定位及区别: 回答要点: 主要 ...
随机推荐
- qt 移动窗口MoveWindow
RECT r; GetWindowRect(this->gameHwnd, &r); // 获取窗口的宽度和高度 int nWidth = r.right - r.left; int n ...
- VMware安装centos.6.8无法访问主机的问题
安装步骤 点击下一步,如下图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图: 接上图: 接上图: 点击 完成: 启动虚拟机进行安装: 发现报 ...
- Vue学习笔记-vue-element-admin 按装报错再按装
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- WPF -- 自定义按钮
本文介绍WPF一种自定义按钮的方法. 实现效果 使用图片做按钮背景: 自定义鼠标进入时效果: 自定义按压效果: 自定义禁用效果 实现效果如下图所示: 实现步骤 创建CustomButton.cs,继承 ...
- 使用Reactor完成类似的Flink的操作
一.背景 Flink在处理流式任务的时候有很大的优势,其中windows等操作符可以很方便的完成聚合任务,但是Flink是一套独立的服务,业务流程中如果想使用需要将数据发到kafka,用Flink处理 ...
- SpringBoot(四): SpringBoot web开发 SpringBoot使用jsp
1.在SpringBoot中使用jsp,需要在pom.xml文件中添加依赖 <!--引入Spring Boot内嵌的Tomcat对JSP的解析包--> <dependency> ...
- CVE-2018-2628-WLS Core Components 反序列化
漏洞参考 https://blog.csdn.net/csacs/article/details/87122472 漏洞概述:在 WebLogic 里,攻击者利用其他rmi绕过weblogic黑名单限 ...
- 测试工程师Docker基础
一.docker概述 1.docker为什么会出现 本质:所有技术的出现都是因为出现了一些问题,我们需要去解决,才去研究和学习: 问题: 开发环境.测试环境.仿真环境.正式环境等诸多环境都需要进行 ...
- sprintgboot+springsecurity的跨域问题,
整个项目是使用前后端分离的形式开发,登录接口部分出现了问题, 重写了security的登录接口,返回json数据 到这一步已经没有没有问题了,使用postman测试,也可以看到接口返回的结果,但是使用 ...
- git的回滚与撤销【reset and revert】
git的工作流程-- 3个区域 工作区:我们可以看到的文件内容 在操作 git add 之前的!! 缓存区:是不可见的 已经git add操作,还没git commit -m "" ...