跳到主要内容

RabbitMQ面试题

RabbitMQ基础知识

概述与特性

  1. 什么是RabbitMQ?它是基于什么协议的?
  2. RabbitMQ和其他消息队列(Kafka、RocketMQ)的区别?
  3. RabbitMQ的应用场景有哪些?
  4. AMQP协议是什么?主要特点?

核心概念

  1. RabbitMQ的核心组件有哪些?(Producer、Consumer、Broker、Queue、Exchange、Binding)
  2. 什么是Connection和Channel?它们的区别?
  3. Virtual Host是什么?作用是什么?
  4. 消息从生产者到消费者的完整流程?

Exchange与Queue

Exchange类型

  1. RabbitMQ有哪几种Exchange类型?
  2. Direct、Topic、Fanout Exchange的区别和使用场景?
  3. 如何声明Exchange?durable和autoDelete的区别?
  4. 什么是死信Exchange?如何配置?

Queue管理

  1. Queue的属性有哪些?(durable、exclusive、autoDelete)
  2. 什么是镜像队列?如何配置?
  3. 什么是死信队列(DLQ)?使用场景?
  4. Queue积压如何处理?
  5. 如何设置Queue的TTL和消息TTL?

消息确认与可靠性

确认机制

  1. 什么是Publisher Confirm?如何使用?
  2. 什么是消费者确认(ACK)?自动确认和手动确认的区别?
  3. 如何保证消息不丢失?
  4. 如何处理重复消息?

集群与高可用

集群架构

  1. RabbitMQ集群的架构是怎样的?
  2. 普通集群和镜像集群的区别?
  3. 如何搭建RabbitMQ集群?
  4. 集群脑裂问题如何解决?

高可用方案

  1. RabbitMQ的高可用方案有哪些?
  2. 如何配置HAProxy负载均衡?
  3. Federation和Shovel插件的作用?

性能优化

性能监控

  1. RabbitMQ的主要性能指标有哪些?
  2. 如何监控消息吞吐量和延迟?
  3. 内存和磁盘使用如何监控?

优化策略

  1. 如何提高消息处理性能?
  2. 预取值(prefetch)如何设置?
  3. 持久化对性能的影响?

监控与运维

监控工具

  1. RabbitMQ Management插件的功能?
  2. 如何使用Prometheus监控RabbitMQ?
  3. 如何设置监控告警?

运维管理

  1. RabbitMQ如何备份和恢复?
  2. 如何进行版本升级?
  3. 如何管理用户权限?
  4. 配置文件有哪些重要参数?

故障处理

  1. RabbitMQ启动失败如何排查?
  2. 连接失败的常见原因?
  3. 内存溢出如何解决?
  4. 磁盘空间不足如何处理?
  5. 集群节点失联如何恢复?

安全配置

  1. RabbitMQ的认证机制有哪些?
  2. 如何启用SSL/TLS加密传输?
  3. 如何限制连接来源和设置资源限制?

最佳实践

  1. RabbitMQ部署架构建议?
  2. 监控告警的最佳实践?
  3. 故障处理流程建议?

更新时间:2025-01-30