RabbitMQ学习(八)之 “RabbitMQ面试题大全”

  1. 消息队列的作用与使用场景
    要点:关键词+应用场景

  2. Channel 和 vhost 的作用是什么
    Channel:减少 TCP 资源的消耗。也是最重要的编程接口。
    Vhost:提高硬件资源利用率,实现资源隔离。

  3. RabbitMQ 的消息有哪些路由方式?适合在什么业务场景使用?
    Direct、Topic、Fanout

  4. 交换机与队列、队列与消费者的绑定关系是什么样的?

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

    • 直接丢弃。
    • 备份交换机(alternate-exchange)接收。
  6. 消息在什么时候会变成 Dead Letter(死信)?

    • 消息过期;
    • 消息超过队列长度或容量;
    • 消息被拒绝并且未设置重回队列
  7. RabbitMQ 如何实现延迟队列?

    • 基于数据库+定时任务;
    • 消息过期+死信队列;
    • 延迟队列插件。
  8. 哪些情况会导致消息丢失?怎么解决? 哪些情况会导致消息重复?怎么解决?
    从消息发送的整个流程来分析。

  9. 可以用队列的 x-max-length 最大消息数来实现限流吗?例如秒杀场景。
    不能,因为会删除先入队的消息,不公平。

  10. 如何提高消息的消费速率?
    创建多个消费者。

  11. AmqpTemplate 和 RabbitTemplate 的区别?
    Spring AMQP 是 Spring 整合 AMQP 的一个抽象。Spring-Rabbit 是一个实现。

  12. 如何动态地创建消费者监听队列?
    通过 ListenerContainer

container.setQueues(getSecondQueue(), getThirdQueue()); //监听的队列
  1. Spring AMQP 中消息怎么封装?用什么转换?
    Message,MessageConvertor

  2. 如何保证消息的顺序性?
    一个队列只有一个消费者

  3. RabbitMQ 的集群节点类型?
    磁盘节点和内存节点

  4. 如何保证 RabbitMQ 的高可用?
    HAProxy(LVS)+Keepalived

  5. 大量消息堆积怎么办?
    多创建几个消费者同时消费

  6. MQ 选型分析
    使用和管理
    API、与 Spring 集成 管理控制台,权限、安全、监控 扩展性
    社区支持
    性能 并发性
    消息吞吐量 消息堆积能力
    功能
    事务性消息
    顺序性消息
    消息重试
    死信队列
    优先级队列
    延迟队列
    可靠+可用 集群
    持久化 消息同步

  7. 设计一个 MQ,你的思路是什么?
    存储与转发。
    存储:内存:用什么数据结构?
    磁盘:文件系统?数据库?
    通信:通信协议(TCP HTTP AMQP )?一对一?一对多? 推模式?拉模式?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值