RabbitMQ面试题
RabbitMQ基础知识
概述与特性
- 什么是RabbitMQ?它是基于什么协议的?
- RabbitMQ和其他消息队列(Kafka、RocketMQ)的区别?
- RabbitMQ的应用场景有哪些?
- AMQP协议是什么?主要特点?
核心概念
- RabbitMQ的核心组件有哪些?(Producer、Consumer、Broker、Queue、Exchange、Binding)
- 什么是Connection和Channel?它们的区别?
- Virtual Host是什么?作用是什么?
- 消息从生产者到消费者的完整流程?
Exchange与Queue
Exchange类型
- RabbitMQ有哪几种Exchange类型?
- Direct、Topic、Fanout Exchange的区别和使用场景?
- 如何声明Exchange?durable和autoDelete的区别?
- 什么是死信Exchange?如何配置?
Queue管理
- Queue的属性有哪些?(durable、exclusive、autoDelete)
- 什么是镜像队列?如何配置?
- 什么是死信队列(DLQ)?使用场景?
- Queue积压如何处理?
- 如何设置Queue的TTL和消息TTL?
消息确认与可靠性
确认机制
- 什么是Publisher Confirm?如何使用?
- 什么是消费者确认(ACK)?自动确认和手动确认的区别?
- 如何保证消息不丢失?
- 如何处理重复消息?
集群与高可用
集群架构
- RabbitMQ集群的架构是怎样的?
- 普通集群和镜像集群的区别?
- 如何搭建RabbitMQ集群?
- 集群脑裂问题如何解决?
高可用方案
- RabbitMQ的高可用方案有哪些?
- 如何配置HAProxy负载均衡?
- Federation和Shovel插件的作用?
性能优化
性能监控
- RabbitMQ的主要性能指标有哪些?
- 如何监控消息吞吐量和延迟?
- 内存和磁盘使用如何监控?
优化策略
- 如何提高消息处理性能?
- 预取值(prefetch)如何设置?
- 持久化对性能的影响?
监控与运维
监控工具
- RabbitMQ Management插件的功能?
- 如何使用Prometheus监控RabbitMQ?
- 如何设置监控告警?
运维管理
- RabbitMQ如何备份和恢复?
- 如何进行版本升级?
- 如何管理用户权限?
- 配置文件有哪些重要参数?
故障处理
- RabbitMQ启动失败如何排查?
- 连接失败的常见原因?
- 内存溢出如何解决?
- 磁盘空间不足如何处理?
- 集群节点失联如何恢复?
安全配置
- RabbitMQ的认证机制有哪些?
- 如何启用SSL/TLS加密传输?
- 如何限制连接来源和设置资源限制?
最佳实践
- RabbitMQ部署架构建议?
- 监控告警的最佳实践?
- 故障处理流程建议?
更新时间:2025-01-30