rabbitmq面试有哪些知识点

背景

rabbitmq是erlang语言编写,通过AMQP协议通信,开源且并发量高,是各大公司常用到的消息队列组价之一,当然也是面试过程中会问到相关问题,先列出几道经常会被问到的面试题,看看你能答对几个

更多资料获取

在这里插入图片描述

文章内容有限,更多rabbitmq相关资料获取如下
链接: https://pan.baidu.com/s/1BVMwaQMYzu2TFQWwgqa38w
提取码: spd8
提取码过期请关注公众号回复shell重新获取:*
在这里插入图片描述

常见面试题

rabbitmq有什么特点?

  • 可靠性:rabbitmq内部有一些机制可以保证可靠性,如消息和队列持久化,消息的发布确认、传输确认等
  • 支持多种协议:rabbitmq除了支持AMQP协议外,还支持MQTT等消息中间件协议。
  • 高可用性: 队列可以在多台机器中设置镜像,一般设置成2,一台机器挂了,另一台机器上的队列提供服务。
  • 灵活的路由功能:消息进入到队列前是经过交换机进行路由到队列的,rabbitmq内置一些简单的交换机,对于复杂的路由功能可通过多个交换机绑定来实现,当然也可以通过插件来实现。
  • 多种语言客户端:rabbitmq几乎支持所有语言客户端,包括不限于java、python、go等。
  • 人性化的管理节点:rabbitmq提供了容易使用的管理界面,可以在界面上进行监控和管理消息,管理集群节点等。
  • 可扩展性:可根据需要轻松扩展集群节点。

为什么需要消息队列?

随着业务规模的扩张,很多应用日活几千万,之前的单体架构也逐步演进到目前的微服务架构,大量的微服务之间耦合严重。主要是为了解决微服务高并发场景下耦合严重、通信问题、大流量问题。
服务解耦、异步通信、流量削峰。

解释下AMQP是什么以及其组成?

AMQP协议是rabbitmq底层实现,所以两者的模型框架是相似的,都是消息发送给交换机,然后交换机绑定队列。

AMQP协议分为三层:

  • transport layer:最底层,主要用于传输二进制数据流。
  • session layer: 中间层,主要是将客户端消息发送给服务器,然后服务器返回应答消息给客户端,保证消息的可靠性。
  • module layer: 最高层,定义了一些客户端可调用的函数。

AMQP协议中的三大组件:

  • 交换机(exchange):主要用于将消息路由给相应队列。
  • 队列(queue):主要用于存储消息,消息可存放在内存或者硬盘中。
  • 绑定(binding):主要时告知交换机将消息路由到那些队列。

消息队列有啥优缺点?

  • 优点:解耦、异步、削峰
  • 缺点:
    系统引入更多外部依赖,一旦mq挂掉,整个系统将不可用。
    系统复杂度提高了,如何保证消息不被重复消费以及如何处理消息丢失问题等
    如何保证消息传递的顺序性和数据的一致性问题一大堆。

如何保证消息传递过程中的可靠性?

消息可靠性主要体现在以下几个节点,并且有了对应的处理手段

  1. 生产者到rabbitmq之间:主要是通过事务或者confirm机制确保可靠性,这两种方式互斥。
  2. rabbitmq本身:可以采取持久化将交换机和队列保存到磁盘中,多节点集群、镜像模式等
  3. rabbitmq到消费者:可以通过basicack机制,死信队列、消息补偿等措施保证可靠性。

交换机无法将消息发送给队列将如何处理?

查看medatory的值,如果为true,则返回消息给生产者,如果是false,则丢弃。

什么是死信队列,导致死信的原因有哪些?

死信队列:DLQ,主要是因为在队列中信息超过指定时间未被消费,就会重新发送给另一台交换机(死信交换机),然后这台交换机将这条消息路由到死信队列中。绑定死信交换机的队列就是私信队列。
导致死信的原因有三:

  1. 消息的TTL时间过期
  2. 队列满了
  3. 消息被拒绝了

更多内容和资料请关注公众号;数据工匠大壮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据工匠大壮

请狠狠粗暴的爱我!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值