RabbitMQ面试题概述

rabbitMQ(共10题)



前言

        RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件;


1、什么是RabbitMQ?为什么使用RabbitMQ?

        RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件;

可以用它来:解耦、异步、削峰。

2、使用RabbitMQ有什么好处?

①.解耦,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!

②.异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度

③.削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常

3、RabbitMQ 中的 broker 是指什么?cluster 又是指什么?

        broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 RabbitMQ 应用程序。cluster 是在 broker 的基础之上,增加了 node 之间共享元数据的约束。

#4、RabbitMQ有什么优缺点?

        优点:解耦、异步、削峰;

        缺点:降低了系统的稳定性:本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低;

        增加了系统的复杂性:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。因此,需要考虑的东西更多,复杂性增大。

5、如何保证RabbitMQ的高可用?

        没有哪个项目会只用一搭建一台RabbitMQ服务器提供服务,风险太大;

6、如何保证RabbitMQ消息的可靠传输?

        消息不可靠的情况可能是消息丢失,劫持等原因;

        丢失又分为:生产者丢失消息、消息列表丢失消息、消费者丢失消息;

7、如何保证RabbitMQ消息的顺序性?

        单线程消费保证消息的顺序性;对消息进行编号,消费者处理消息是根据编号处理消息;

8、如何保证RabbitMQ不被重复消费?

        先说为什么会重复消费:正常情况下,消费者在消费消息的时候,消费完毕后,会发送一个确认消息给消息队列,消息队列就知道该消息被消费了,就会将该消息从消息队列中删除;

        但是因为网络传输等等故障,确认信息没有传送到消息队列,导致消息队列不知道自己已经消费过该消息了,再次将消息分发给其他的消费者。

        针对以上问题,一个解决思路是:保证消息的唯一性,就算是多次传输,不要让消息的多次消费带来影响;保证消息等幂性;

9、消息基于什么传输?

         由于TCP连接的创建和销毁开销较大,且并发数受系统资源限制,会造成性能瓶颈。RabbitMQ使用信道的方式来传输数据。信道是建立在真实的TCP连接内的虚拟连接,且每条TCP连接上的信道数量没有限制。

10、消息如何分发?

        若该队列至少有一个消费者订阅,消息将以循环(round-robin)的方式发送给消费者。每条消息只会分发给一个订阅的消费者(前提是消费者能够正常处理消息并进行确认)。


总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值