At-least-once delivery prioritizes preventing message loss: configure a producer with acks=all and a sufficient min.insync.replicas value, such as 2. The message is replicated reliably, but a duplicate can appear if the broker stores it and the acknowledgement is lost before reaching the producer. section 5.1.3
A lost acknowledgement creates a duplicate
A producer sends a banking transaction, the broker persists it, and the acknowledgement disappears in transit. The producer retries because it cannot know whether persistence succeeded, so the transaction may be stored twice. A duplicated temperature reading may be tolerable; a duplicated debit or credit is not. section 5.1.3
Compare the delivery guarantees:
- At-most-once uses acks=0 and prevents duplicates at the cost of possible message loss. section 5.1.3
- At-least-once uses acks=all with sufficient in-sync replicas and accepts duplicates as the cost of avoiding loss. section 5.4
- Exactly-once adds producer idempotence to prevent repeated messages from producing repeated effects. section 5.1.3



