title: How does kafka consumers/producers commit messages/partitions?
body: <p>I have just started working with kafka, and started playing with kafka in my local machine. I am able to produce and consume messages using <a href="https://docs.confluent.io/current/clients/python.html#python-client" rel="nofollow noreferrer">python kafka client</a> provided by confluent.</p>
  
  <p>What my understanding is so far,</p>
  
  <ol>
  <li>kafka client (i.e both consumer and producers) maintains a queue of messages.</li>
  <li>Producers, will store every produced message in local buffer queue. And producers need to explicitly push messages from local buffer to kafka cluster.</li>
  <li>On Consumer's end, it will somehow fetch messages from kafka cluster and store it in a local buffer queue and then pull these messages from buffer via api calls such as <code>poll()</code></li>
  </ol>
  
  <p>First of all, am I missing here ?</p>
  
  <p>Also, I frequently come across a phrase "commiting messages/offsets" at both clients. What exactly does commiting messages/offsets to kafka mean?</p>