...
Currently, there are 2 approaches to use the Kafka java client correctly, that is, in a way that does not cause record duplication during normal operation. (Duplicates are still possible due to failures.)
Approach 1 - process all records immediately (synchronous)
This approach is useful when all processing can happen between the calls to poll.
...
In the new approach, when a revoke is requested in one poll, the revoke will be completed in the next poll.
When the call to a poll invocation completes and a partition revoke is requested, the user has a choice:
...