• 5
  • 4
分享
  • 你不得不了解的rabbitmq面试经!
  • 李寻欢 2020-11-05 09:17:36 字数 1664 阅读 1596 收藏 4

前言:消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等,这里准备了一些rabbitmq面试题,你会么?

rabbitmq 的使用场景有哪些?

1、异步调用

2、应用解耦

3、流量削峰

4、数据冗余

5、延迟队列

6、分布式事务

......

rabbitmq 有哪些重要的角色?

1、生产者:发送消息的角色。

2、消费者:接收并处理消息的角色。

3、消息代理者:传递消息的角色,本身不产生和消费消息。

rabbitmq 有哪些重要的组件?

1、生产、消费者

2、消息、信道

3、交换器、路由键、队列、broker

rabbitmq 中 vhost 的作用是什么?

vhost可以看作是小型的RabbitMQ服务器,他拥有自己独立的交换器、队列、绑定关系、以及权限管理。

客户端连接RabbitMQ时必须制定一个vhost,默认使用"/"。

也就是说一个RabbitMQ服务可以拥有很多个子RabbitMQ服务,这些字RabbitMQ服务可以为其它很多应用程序提供服务;这样可以减少RabbitMQ服务器搭建的成本。

rabbitmq 的消息是怎么发送的?

生产者通过信道将消息发送到交换器,然后交换器再根据路由键将消息路由到对应的队列中。

rabbitmq 怎么保证消息的稳定性?

对于发送方来说,可以使用事务或更轻量级别的发送方确认机制来保证消息达到RabbitMQ服务器。

对于接收方来说,autoAck设置成false,在处理完消息后再手动确认。

rabbitmq 怎么避免消息丢失?

1、队列的durable设为true,将消息持久化到磁盘。

2、采用消费者确认模式。

3、对RabbitMQ集群,通过镜像队列备份数据。

4、可以将requeue设置为true,将漏处理的消息重新入队。

要保证消息持久化成功的条件有哪些?

1、队列必须为持久化的

2、消息的投递模式必须是持久化的,deliveryMode=2

3、消息已到达持久化的交换器和队列

rabbitmq 持久化有什么缺点?

持久化会多一次IO操作,在一定程度上会降低RabbitMQ的吞吐量,如果不计服务器成本的话可以考虑使用固态硬盘(SSD)来优化。

rabbitmq 有几种广播类型?

fanout、direct、topic。

rabbitmq 怎么实现延迟消息队列?

采用死信交换器,也有些人叫做死信队列,在创建队列时指定x-message-ttl、x-dead-letter-exchange这两个参数来实现(利用消息过期会进入死信队列的特性)。

rabbitmq 集群有什么用?

1、不仅可以线性扩展RabbitMQ的吞吐量。

2、还可以使用镜像队列来降低消息丢失的风险。

3、以及某台服务器出现问题后RabbitMQ还能正常的提供服务。

rabbitmq 节点的类型有哪些?

磁盘节点和内存节点:

1、磁盘节点主要用于持久化交换器、队列及用户角色权限等

2、内存节点主要用于读写RabbitMQ消息,但消息都存储在内存中,服务器重启则消息丢失;但其性能高于磁盘节点。

rabbitmq 集群搭建需要注意哪些问题?

1、保证各个节点的cookie一致,否则节点之间无法通信。

2、必须存在一个磁盘节点,高可用的话最好一个以上。

rabbitmq 每个节点是其他节点的完整拷贝吗?为什么?

不是;集群节点不对其它节点的队列进行复制,只会存储队列所在节点及元数据。

rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况?

虽然还能够正常的读写消息,但无法创建交换器、队列、绑定关系以及用户和用户的权限角色等。

rabbitmq 对集群节点停止顺序有要求吗?

停止服务:应当先关闭内存节点,再关闭磁盘节点。先关闭磁盘节点的话会导致无法创建交换器、队列、绑定关系,从而可能会导致数据丢失。

启动服务:先启动磁盘节点,再启动内存节点。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 今天给大家分享一个“VirtualEnv(虚拟环境)”的概念。在学习RobotFramework时遇到这么一个问题:电脑本地环境已经安装了python3,但是RobotFramework接口测试框架一开始对python3的兼容还不够完全,存在较多的问题,所以需要使用python2环境来开展接口自动化工作。这个时候就遇到python和python3版本造成的环境冲突的问题了。如果卸载python3重新安装python2会导致我原有的其他项目可能出现问题;那么如果直接使用python3环境对应的RobotFramework又存在很多兼容性问题。怎么办?这时候“VirtualEnv(虚拟环境)”的好...
            0 0 1439
            分享
          •   作为一个工程师,你找工作的敲门砖是什么?是学历?是经验?还是年龄?  从事测试工程师的人员日趋增多,自然而然竞争也会变得激烈。如何让我们的工作履历变的更加精彩,除了我们实际的工作经验之外,能够直观我们技术的还有我们的职业证书,很多公司HR为了增加企业资质库、更快地筛查适合的人员,在招聘时会更倾向于拥有相关证书的应聘者。 今天我们就来盘点软件测试工程师领域含金量较高的几个证书吧! 软件测试工程师必须要了解的4个证书。  1.软件评测师  软件评测师考试(以下简称“软考”)是全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)的中级考试项目,它属于职业资格考试,又是职称资格考试,具有...
            1 1 11899
            分享
          •   彭博社称,苹果提议两年内在印尼投资近 1 亿美元以期解除该国对新款 iPhone 的销售禁令,相较于之前的提议增加了近十倍。  知情人士表示印尼工业部在看到苹果愿意加大投资后,要求这家科技巨头改变其投资计划、更多地关注在该国进行智能手机研发(需满足 40% 国产化率的要求)。当然,印尼工业部尚未就苹果的最新提议做出最终决定。  根据印度尼西亚政府的说法,苹果仅通过开发者学院在该国投资了 1.5 万亿印尼盾,低于承诺的 1.7 万亿印尼盾。  除苹果外,印度尼西亚还禁止销售 Google Pixel 等机型,同样是因为存在类似的投资不足问题。作者:问舟原文链接:IT之家(ithome.com...
            0 0 58
            分享
          • 性能测试术语解释1.响应时间响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点再可以细分,如对于一个C/S软件的响应时间可以细分为网络传输时间、应用服务器处理时间、数据库服务器处理时间。另外客户端自身也存在着解析时间、界面绘制呈现时间等。响应时间主要站在客户端角度来看的一个性能指标,它是用户最关心、并且容易感知到的一个性能指标。2.吞吐率吞吐率指单位时间内系统处理用户的请求数,从业务角度看,吞吐率可以用每秒请求数、每秒事务数、每秒页面数、每秒查询数等单位来衡量。从网络角度看,吞吐率也可以用每秒字节数来衡量。吞吐率主要站在服务端的角度来看的一个...
            1 1 1887
            分享
          •   近年来,随着国际形势和网络空间环境日趋复杂,各方面对网络安全重视程度日益提升,网络安全也已纳入了国家战略。在此背景下,系统的安全测试与防护就显得越来越重要,项目组在进行基于owasp zap工具进行安全扫描过程中,对工具的使用及扫描流程进行了深入分析,对常规扫描方式进行了优化。  zap提供了强大的路径爬虫及漏洞扫描功能,常规方式下,可以通过配置代理来录制前台页面,点击系统页面功能后抓取网站路径,再通过“爬行”、“强制浏览目录”等功能进行路径的分析与扩展,最后通过“主动扫描”功能进行漏洞扫描,生成漏扫报告。但这种方式抓取到的网站路径并不能保证是系统的全量路径,也就可能会导致扫描结果不详尽。...
            15 15 994
            分享
      • 51testing软件测试圈微信