advanced

Kafka delivery semantics

Объясняйте at-most-once, at-least-once, effectively-once, transactions, idempotent producers и почему consumers still need safe side effects.

At-most-once: commit offset до process — возможна потеря messages. At-least-once: process затем commit — duplicates при failure. Effectively-once сочетает idempotent producer, transactions и idempotent consumer side effects. Kafka не dedupe business logic сама.

Компромисс: сильнее guarantees — больше latency, complexity и broker resources.

На интервью: semantics для payment processing; почему consumers всё ещё нужны inbox или idempotency keys.

Типовые ошибки: exactly-once без transactional boundaries; idempotent producer, но non-idempotent consumer DB writes.

Чеклист:

  • Явно задайте semantics per topic.
  • Broker settings с application idempotency.
  • Тест failure между process и commit.
  • Duplicate handling для operators в документации.