At-most-once: acks=0 or acks=1 without retries. Messages may be lost but never duplicated. At-least-once: acks=all with retries but without idempotency. No data loss but duplicates possible. Exactly-once: enable.idempotence=true (single session) or transactions (cross-session, cross-partition). For most production use cases, at-least-once + idempotent consumer logic is the practical choice.
Lesson 5 of 5
Delivery Semantics
Try it in the simulator
Guided scenarios for this module — the simulator opens with the exercise already running.