A Confluence article states
Stream processing applications written in the Kafka Streams library can turn on exactly-once semantics by simply making a single config change, to set the config named “processing.guarantee” to “exactly_once” (default value is “at_least_once”), with no code change required.
But as transactions are said to be used, I would like to know: Are transactions used implicitly by Kafka Streams, or do I have to use them explicitly?
In other words, do I have to call something like .beginTransaction()
and .commitTransaction()
, or is all of this really being taken care of under the hood, and all that remains for me to be done is fine-tuning commit.interval.ms
and cache.max.bytes.buffering
?