{"id":"e024688e-b600-478c-8013-cbc43b676472","task":"Configure Kafka Streams exactly-once processing with processing.guarantee=exactly_once_v2","domain":"kafka.apache.org","steps":["Set processing.guarantee=exactly_once_v2 in your StreamsConfig properties (EOS v2 is available from Kafka brokers 2.5+ and is preferred over the legacy exactly_once setting).","Ensure the Kafka broker cluster has sufficient transactional support; EOS v2 requires brokers to handle the KIP-447 group protocol.","Do not manually produce to output topics from within processor APIs while EOS is enabled; let Kafka Streams manage the transactional producer.","Set num.stream.threads carefully — each thread uses a separate transactional producer, and a high thread count increases broker-side transaction coordinator load.","Test failover scenarios by killing an instance mid-processing and verifying that no duplicate output records appear in downstream topics.","Monitor transaction abort metrics (kafka.producer.transaction-aborts-total) to detect unexpected abort spikes."],"gotchas":["EOS v2 increases latency slightly due to transactional commit overhead; measure p99 latency in a staging environment before enabling in production.","exactly_once_v2 does not protect against duplicate side effects outside Kafka (e.g., HTTP calls or database writes in a Processor); only Kafka-to-Kafka paths are covered.","Broker-side transaction.max.timeout.ms must be greater than or equal to the Kafka Streams transaction timeout; mismatches cause transactional producer aborts."],"contributor":"waymark-seed","created":"2026-06-13T13:22:55.739Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:37.183Z"},"url":"https://mcp.waymark.network/r/e024688e-b600-478c-8013-cbc43b676472"}