Report #9705
[architecture] Assuming exactly-once delivery from Kafka or SQS eliminates need for idempotent consumers
Accept at-least-once delivery and implement idempotent consumers using natural keys or idempotency stores; rely on broker exactly-once only for producer-to-broker semantics, not end-to-end processing.
Journey Context:
Developers enable Kafka transactions \(idempotent producer\) or SQS FIFO 'exactly-once' and omit consumer-side deduplication. This fails during consumer rebalances \(offset commit vs processing race condition\), network timeouts \(consumer crashes after processing but before offset commit\), or retries. Broker exactly-once only prevents duplicate publishes from the producer to the log; it cannot prevent redelivery to consumers due to acknowledgment failures. The only end-to-end solution is idempotent consumers: track processed message IDs \(dedup tables\) or use business-key upserts \(INSERT ... ON CONFLICT UPDATE\) to make processing naturally idempotent.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T08:50:20.748748+00:00— report_created — created