Kafka transactions allow atomic writes across multiple partitions and topics. A transactional producer uses a transactional.id — if the producer crashes and restarts with the same ID, any pending transaction is aborted. Consumers using isolation.level=read_committed skip messages from aborted transactions. This enables exactly-once semantics (EOS) in Kafka Streams and similar frameworks.
Key configuration
transactional.id=my-producer-v1 — unique per producer instance
isolation.level=read_committed — consumer side
max.block.ms=60000 — transaction timeout