When publishing messages to Kafka, you make a choice between at-most-once and 
at-least-once delivery, depending on whether you wait for acknowledgments and 
whether you retry on failures. In most cases, those options are good enough. 
However, some systems offer exactly-once reliability too. Although my view is 
that the practical use of exactly-once is limited in the situations that Kafka 
is generally used for, when you're connecting other systems to Kafka or 
bridging between protocols, I think there is value in propagating the 
reliability level that the other system expects.

As a consumer, you can manage your offset and get exactly-once delivery, or 
more likely exactly-once processing, of the messages.

I've read about idempotent producers 
(https://cwiki.apache.org/confluence/display/KAFKA/Idempotent+Producer) and I 
know there's been some discussion about transactions too.

Is there a plan to provide the tools to enable exactly-once publication 
behaviour? Is this a planned enhancement to Kafka Connect? Is there already 
some technique that people are using effectively to get exactly-once?

Andrew Schofield                                          

Reply via email to