RabbitMQ 如何保证消息可靠?

RabbitMQ 面试题发布于

一、生产端

  • 开启 Publisher Confirm,确保消息到达 Exchange。
  • 开启 Return 机制,消息不可路由时通知生产者。
  • 本地消息表 + 定时补偿。

二、Broker 端

  • 交换机、队列、消息都持久化(durable=true, deliveryMode=2)。
  • 镜像队列:队列复制到多个节点,主节点宕机从节点接管。

三、消费端

  • 手动 ACK,处理完再确认。
  • 失败消息进死信队列。
  • 消费幂等:消息可能重复,业务需去重。

四、顺序消息

RabbitMQ 单个队列内消息有序,但多消费者消费时顺序被打乱。保证顺序需单队列单消费者,或按业务 key 路由到同一队列。