问题:请讲下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的工作模式的更多相关文章

  1. java面试一日一题:java中的垃圾回收器

    问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...

  2. java面试一日一题:mysql中常用的存储引擎有哪些?

    问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...

  3. java面试一日一题:讲下在什么情况下会发生类加载

    问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...

  4. java面试一日一题:讲下mysql中的undolog

    问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...

  5. java面试一日一题:java中垃圾回收算法有哪些

    问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...

  6. java面试一日一题:java线程池

    问题:请讲下java中的线程池 分析:在面试中经常问到线程池的问题,要掌握其基本概念,使用方法,注意事项等,引申下tomcat中默认的线程数是多少 回答要点: 主要从以下几点去考虑, 1.为什么要使用 ...

  7. java面试一日一题:讲对mysql的MVCC的理解

    问题:请讲下对mysql中MVCC的理解 分析:这个问题要回答的是对MVCC的理解,以及MVCC解决了什么问题这几个方面入手. 回答要点: 主要从以下几点去考虑, 1.什么是MVCC? 2.MVCC用 ...

  8. java面试一日一题:java的类加载过程

    问题:请讲下java的类加载机制及过程 分析:该问题主要考察对JVM加载类的机制及过程,延申出的问题是为什么使用双亲委托模型,有什么办法可以打破双亲委托吗: 回答要点: 主要从以下几点去考虑, 1.类 ...

  9. java面试一日一题:binlog undolog redolog的区别

    问题:请讲下mysql中binlog.undolog.redolog三种日志的区别 分析:mysql中这三种日志很常见,也是面试中涉及比较多的方面,要理解清楚这三种日志的定位及区别: 回答要点: 主要 ...

随机推荐

  1. cnblogs & 502 Bad Gateway

    cnblogs & 502 Bad Gateway 博客园 502 Bad Gateway 服务器发生了一些错误,请联系 contact@cnblogs.com 可以查看,不可以编辑 HTTP ...

  2. git cli all in one

    git cli all in one https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud git create ...

  3. taro list render bug

    taro list render bug 列表渲染 https://taro-docs.jd.com/taro/docs/list.html not support jsx map 垃圾微信 cons ...

  4. js replace all & replaceAll

    js replace all & replaceAll https://scotch.io/tutorials/javascript-replace-all-instances-of-a-st ...

  5. WEB 面向开发者的结构化数据

    通常用于google搜索 See also: video 探索搜索库

  6. vue的filter用法,检索内容

    var app5 = new Vue({ el: '#app5', data: { shoppingList: [ "Milk", "Donuts", &quo ...

  7. C#关于panle重叠

    当多个panle重叠不显示不出来的时候  选择视图---------------其它窗口----------------文档大纲  然后拖动进行调整

  8. @RestController和@Controller

    1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解 2 ...

  9. sql if else 用法

    语法: case when 条件1 then 结果1 when 条件2 then 结果2 else 结果N end 可以有任意多个条件,如果没有默认的结果,最后的else也可以不写, select c ...

  10. docker封装vue项目并使用jenkins发布

    一.概述 vue项目可以打一个dist静态资源包,直接使用Nginx发布即可. 现在由于要上docker,需要将vue项目和nginx打成一个镜像才行. 项目结构如下: ./ ├── build │  ...