Hi,

yes, all examples have at-least-once semantics because this is the only
"mode" Kafka Streams supports -- you cannot "disable" it. (btw: we are
currently working on exactly-once for Streams that you will be able to
turn off/on).

There is not much documentation about how it work internally, because it
uses the same mechanism Kafka consumer user to provide at-least-once
semantics and there is good documentation for this:
http://docs.confluent.io/current/clients/consumer.html

The basic idea is, that input topic offsets get only committed after the
processing is completely finished and all intermediate state/data is
flushed to reliable storage -- to ensure nothing can get lost. If a
failure happens, just retry from last committed offset (and because some
output date might already be written which cannot be undone you might
get duplicates).

-Matthias

On 1/29/17 8:13 PM, Mahendra Kariya wrote:
> Hey All,
> 
> I am new to Kafka streams. From the documentation
> <http://docs.confluent.io/3.1.0/streams/architecture.html#processing-guarantees>,
> it is pretty much clear that streams support at least once semantics. But I
> couldn't find details about how this is supported. I am interested in
> knowing the finer details / design of this.
> 
> Is there some documentation around this?
> Is there some documentation around what semantics are followed by the
> various Kafka streams examples
> <https://github.com/confluentinc/examples/tree/3.1.x/kafka-streams>
> available on Github? Do all of them follow at least once?
> 
> 
> Thanks,
> Mahendra
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to