RabbitMQ面试问题

面试问题

1、消息队列的作用和场景?

用在异步、解耦、削峰的业务中

2、Channel和Vhost的作用是什么?

Channel:减少TCP资源消耗。也是重要的编程接口。
Vhost:提高资源利用率,实现资源隔离。

3、RabbitMQ的消息有哪些路由方式?适合什么业务场景?

Direct、Topic、Fanout
Direct:直连交换机,用于等值匹配
Topic:主题交换机,模糊匹配,用于不确定的业务场景
Fanout:广播交换机

4、交换机与队列、队列于消费者绑定关系如何?多个消费者监听一个队列,消息会重复消费吗?

多对多关系。
不会重复消费,因为默认轮询(平均分发)

5、无法被路由的消息,去了哪里?

直接丢弃。可用备份交换机回收。

6、消息在什么时候会变成Dead Letter(死信)?

消息过期;
消息超过队列最大长度或最大容量。
消息被拒绝并且未被设置重回队列

7、如果一个项目代码要从多个服务器接收消息来消费,怎么做?如果一个项目要发送消息到多个服务器,怎么做?

定义多个ConnectionFactory,注入到消费者监听类Template。

8、RabbitMq如何实现延迟队列?

基于数据库+定时任务。
或者消息过期+死信队列;
或者使用RabbitMq延迟插件;

9、哪些情况会导致消息丢失?怎么解决?

10、一个队列最多可以存放多少条消息?

11、可以用队列的x-max-length最大消息数来实现限流?例如秒杀场景

不能。因为会删除最先入队列(对头)的消息,这不公平

12、如何提高消息的消费速率?

创建多个消费者。

13、AmqpTemplate和RabbitTemplate的区别?

Spring AMQP是Spring整合AMQP的一个抽象。Rabbit是一个具体实现。

14、如何动态的创建队列和消费者?

通过ListenContainer。

15、Spring AMQP中消息怎么封装?用什么转换?

Message、MessageConvertor

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

一个队列只有一个消费者。

17、RabbitMQ的集群节点类型?

磁盘节点和内存节点

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

HAProxy(LVS)+Keepalived

19、大量消息堆积怎么办?

1)重启(滑稽)
2)多创建几个消费者同时消费
3)直接清空队列,重发消息

20、设计一个MQ,你的思路是什么?

存储和转发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值