Database Concurrency & Scaling interview question · Most asked

An order is saved but the 'OrderPlaced' event sometimes never reaches Kafka. How do you fix it?

Summary

Use the transactional outbox: insert the event into an outbox table in the same transaction as the order, and publish it via a relay or CDC (Debezium). Consumers dedupe because delivery is at least once.

Longer Answer

Writing to the database and broker separately can't be atomic: commit-then-publish loses events on crashes; publish-then-commit emits events for rolled-back orders. The outbox makes the event part of the database transaction. Monitor the outbox backlog and, for CDC, replication slot lag.

Key Points

  • Dual writes are not atomic
  • Outbox in the same transaction
  • Relay or CDC publishes
  • Idempotent consumers

Deep dive: Outbox and CDC

More most-asked Database Concurrency & Scaling questions

← All Database Concurrency & Scaling questions