消息队列(MQ)高频面试题(10题)

为什么使用消息队列?

用于解耦系统、削峰填谷、异步处理、流量缓冲。

常见的 MQ 有哪些?

RabbitMQ、Kafka、RocketMQ、Redis Stream、ActiveMQ 等。

消息队列的可靠性如何保障?

确认机制(ack)、消息持久化、重试机制、幂等性保障。

什么是消息的幂等性?如何实现?

幂等性是指多次执行结果一致。常用唯一 ID + 状态表记录处理结果。

如何避免消息丢失?

设置消息持久化、消费者手动 ack、使用事务或死信队列。

MQ 中的消费模式有哪些?

点对点(queue)和发布/订阅(topic)模型。

如何实现延迟队列?

使用 TTL + 死信队列,或 MQ 提供的延迟插件(如 RabbitMQ 的延迟插件)。

MQ 如何实现消息顺序?

通过 partition + 单个消费者、同一个 key 的消息进入同一个队列。

Kafka 与 RabbitMQ 的区别?

Kafka 是高吞吐日志系统,适合大数据流处理;RabbitMQ 强调可靠投递和事务性。

消息堆积怎么办?

增加消费者实例、提高消费速率、评估上下游处理瓶颈。