Wrestling through the at-least/most-once semantics of my application and I
was hoping for some confirmation of the semantics. I'm not sure I can
classify the high level consumer as either  type.

False ack scenario:
- Thread A: call next() on the ConsumerIterator, advancing the
PartitionTopicInfo offset
- Thread B: commitOffsets() flushed offset of incomplete message to ZK
- Thread A: fail processing (e.g. kill -9)

False retry scenario:
- Thread A: call next() & successfully process, kill -9 before
commitOffsets either in thread or in parallel.

Is this right or am I missing something (likely)? Seems like the semantics
are essentially approximately once.

Reply via email to