This offset can get committed due to a periodic commit refresh (akka.kafka.consumer.commit-refresh . Kafka consumer commit thread-safety. Kafka consumer will auto commit the offset of the last message received in response to its poll() call. However, committing more often increases network traffic and slows down processing. If we make enable.auto.commit = true and set auto.commit.interval.ms=2000 , then consumer will commit the offset every two seconds. apache-kafka Tutorial - Consumer Groups and Offset Management The two main settings affecting offset management are whether auto-commit is enabled and the offset reset policy. How does kafka consumer auto commit work? - Stack Overflow I need to do a programmatic commit using kafka-python api. If you are using Spring for Apache Kafka, we recommend setting enable.auto.commit to false so that the container will commit the offsets in a more deterministic fashion (either after each record, or each batch of records - the default). Introduction to Apache Kafka: Kafka Producer & Consumer This Project covers how to use Spring Boot with Spring Kafka to Consume JSON/String message from Kafka topics. Example Run Kafka server as described here Example config Then you need to designate a Kafka record key deserializer and a record value deserializer. Namespace/Package Name: kafka. To commit offsets asynchronously we can use following method of KafkaConsumer: public void commitAsync() This method commits offsets returned on the last poll (Duration) for all the subscribed list of topics and partition. A typical Kafka consumer application is centered around a consume loop, which repeatedly calls the Consume method to retrieve records one-by-one that have been efficiently pre-fetched by the consumer in background threads. It subscribes to one or more topics in the Kafka cluster . namespace Confluent.Kafka { public class Consumer<TKey, TValue> : IDisposable { public Task<CommittedOffsets> CommitAsync(); } } . Kafka Consumer with enable.auto.commit = false still committing the ...