What is message acknowledgement in RabbitMQ?
Answer
Message acknowledgement ensures messages are not lost if a consumer crashes while processing. By default (auto-ack), messages are acknowledged when delivered. With manual ack, the consumer explicitly acknowledges after successful processing: channel.basicAck(deliveryTag, false). If the consumer crashes before acknowledging, RabbitMQ re-queues the message for another consumer — guaranteeing at-least-once delivery. Negative acknowledgement (nack): channel.basicNack(deliveryTag, false, requeue: true) — requeue for retry, or requeue: false to discard/dead-letter. Reject: basicReject(deliveryTag, requeue) — same as nack but for a single message. Prefetch count: channel.basicQos(prefetchCount: 10) — limits unacknowledged messages per consumer, enabling fair dispatch and back pressure. Always use manual acknowledgement in production — auto-ack means messages are lost if the consumer dies mid-processing.
Previous
What is a message binding in RabbitMQ?
Next
What is a dead letter exchange (DLX) in RabbitMQ?