Github user hmcl commented on a diff in the pull request:
https://github.com/apache/storm/pull/2380#discussion_r146997051
--- Diff: docs/storm-kafka-client.md ---
@@ -298,25 +298,44 @@ Currently the Kafka spout has has the following
default values, which have been
* max.uncommitted.offsets = 10000000
<br/>
-# Messaging reliability modes
+# Processing Guarantees
-In some cases you may not need or want the spout to guarantee
at-least-once processing of messages. The spout also supports at-most-once and
any-times modes. At-most-once guarantees that any tuple emitted to the topology
will never be reemitted. Any-times makes no guarantees, but may reduce the
overhead of committing offsets to Kafka in cases where you truly don't care how
many times a message is processed.
+The `KafkaSpoutConfig.ProcessingGuarantee` enum parameter controls when
the tuple with the `ConsumerRecord` for an offset is marked
+as processed, i.e. when the offset is committed to Kafka. For
AT_LEAST_ONCE and AT_MOST_ONCE guarantees the spout controls when
+the commit happens. When the guarantee is NONE Kafka controls when the
commit happens.
+
+* AT_LEAST_ONCE - an offset is ready to commit only after the
corresponding tuple has been processed (at-least-once)
+ and acked. If a tuple fails or times-out it will be re-emitted. A
tuple can be processed more than once if for instance
--- End diff --
Done
---