Mostly HarmlessDelivery & correctness

At-least-once

At least once delivery retries until everything arrives, so nothing is lost and some of it arrives twice.

At-least-once - the guarantee that no message is lost, bought by retrying until an acknowledgement comes back, which makes at least once delivery the mode where everything arrives and some of it arrives twice. The mechanism: the sender resends anything unacknowledged, and the consumer commits its position only after processing. Crash between processing and commit, and the same batch is processed again. The duplicate is the receipt for the retry.

This is the default of most real systems, Kafka included, because it is cheap to implement and the failure mode is visible: your counts drift up, never silently down. It is also why deduplication exists as a discipline, and why "exactly-once" systems are at-least-once systems wearing a clever hat.

Do you need it? As a floor, yes. Losing data is worse than repeating it, because repeats can be fixed downstream and losses cannot. Just do not stop here if the numbers matter: pair it with an idempotent sink or dedup, which is the whole content of exactly-once.

Sources

Related