Skip to content
Kafka Is FunProgress

AdvancedArchitecture

How would you implement the Saga pattern using Kafka?

Reference answer

A choreography-based Saga uses Kafka events to coordinate distributed transactions. Each service: 1) Listens to a domain event topic (e.g., OrderCreated). 2) Performs its local transaction. 3) Publishes a result event (e.g., PaymentCompleted or PaymentFailed). Compensating transactions handle failures: if Step 3 publishes a failure, downstream services listen and roll back their changes. Use a dead letter topic for saga failures that can't be compensated. Key design decisions: use transactional producers for atomic event+offset commit, design compensating events carefully, use event IDs for idempotency. Kafka Streams can maintain saga state in a KTable.

Expected key concepts: choreography, Saga, distributed transactions, domain event, compensating transactions, rollback, dead letter, transactional producers, KTable, idempotency