RabbitMQ 的消息确认机制?

RabbitMQ 面试题发布于

一、生产者确认(Publisher Confirm)

  • 消息投递到 Exchange 后返回 confirm。
  • 消息路由到 Queue(持久化消息持久化到磁盘)后返回 ack。
  • 可配合 mandatory 参数,消息不可路由时返回给生产者。

二、消费者确认(Consumer ACK)

  • 自动确认(autoAck=true):消息投递给消费者即认为消费成功,可能丢消息。
  • 手动确认(autoAck=false):消费者处理完后调用 basicAck/basicNack/basicReject。

三、失败处理

  • basicAck:确认成功,消息从队列删除。
  • basicNack/reject:拒绝,可选择 requeue=true 重新入队或 false 丢弃/进死信队列。
  • 多次 requeue 可能导致消息循环,建议配合死信队列。

四、死信队列

消息被拒绝且 requeue=false、超时、队列满时进入死信队列,便于排查和补偿。