消息队列RabbitMQ常见面试题总结(附答案)

1. RabbitMQ的使用场景有哪些?

跨系统的异步通信
多个应用之间的耦合
应用内的同步变异步
消息驱动的架构

2. RabbitMQ有哪些重要的角色?

生产者,消费者,代理

3. RabbitMQ有哪些重要的组件?

ConnectionFactory(连接管理器)
Channel(信道)
Exchange(交换器)
Queue(队列)
RoutingKey(路由键)
BindingKey(绑定键)

4. RabbitMQ 中vhost的作用是什么?

虚拟的broker,最重要的是拥有独立的权限系统,可以做到vhost范围的用户控制

5. RabbitMQ的消息是怎么发送的?

必须连接到RabbitMQ服务器才能发布和消费消息,它们之间会创建一个tcp连接,一旦tcp打开并通过了认证,就会 创建一条amqp信道,信道是创建在“真实”的tcp上的蓄奴链接,amqp命令都是通过信道发送出去。

6. RabbitMQ怎么保证消息的稳定性?

提供事务的功能,通过将channel设置为confirm模式

7. RabbitMQ怎么避免消息丢失?

消息持久化,ack确认机制,设置集群镜像模式,消息补偿机制

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

声明队列必须设置持久化durable设置为true
消息推送投递模式必须设置持久化,deliverymode设置为2
消息已经到达持久化交换器
消息已经到达持久化队列
以上都满足才能保证消息持久化成功

9. RabbitMQ持久化有什么缺点?

持久化的缺点就是降低了服务器的吞吐量
因为使用的是磁盘而非内存存储
从而降低了吞吐量,可尽量使用ssd硬盘来缓解吞吐量问题

10. RabbitMQ有几种广播类型?

direct(默认方式):最基础最简单的模式,发送方把消息发送给订阅方,如果有多个订阅者,默认采取轮询的方式进行消息发送。

headers:与 direct 类似,只是性能很差,此类型几乎用不到。

fanout:分发模式,把消费分发给所有订阅者。

topic:匹配订阅模式,使用正则匹配到消息队列,能匹配到的都能接收到。

11. RabbitMQ怎么实现延迟消息队列?

通过消息过期后进入死信交换器再由交换器转发到延迟消费队列,实现延迟功能
使用RabbitMQ - deleayed - message-exchange 插件实现

12. RabbitMQ集群有什么用?

主要作用:
高可用:某个服务器出现问题,整个RabbitMQ还可以继续使用
高容量:集群可以承载更多的消息量。

13. RabbitMQ节点的类型有哪些?

磁盘节点:消息会存储到磁盘
内存结点:消息都存储在内存中,重启服务器消息丢失,性能高于磁盘类型。

14. RabbitMQ集群搭建需要注意哪些问题?

各节点之间使用“–link”连接,不能忽略
各节点使用的erlang cokkie值必须相同,此值相当于“密钥”的功能,用于各节点的认证
整个集群中必须包含一个磁盘节点

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

不是
存储空间的考虑:如果每个节点都拥有所有队列的完全拷贝,这样的新增节点不当没有新增存储空间,反而增加了更
多的冗余数据
性能的考虑:如果每条消息都需要完整拷贝到每一个节点,那新增节点并没有提升处理消息的能力,最多时保持和单
节点相同的性能甚至是更糟

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

不能创建队列
不能创建交换器
不能创建绑定
不能添加用户
不能更改权限
不能添加和删除集群节点

17. RabbitMQ对集群节点停止顺序有要求吗?

RabbitMQ 对集群的停止的顺序是有要求的,应该先关闭内存节点,最后再关闭磁盘节点。如果顺序恰好相反的话,
可能会造成消息的丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值