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.
Known 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.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp