title: Kafka only once consumption guarantee
body: <p>I see in some answers around stack-overflow and in general in the web the idea that Kafka does not support consumption acknowledge or that exactly once consumption is hard to achieve.</p>
  
  <p>In the following entry as a sample
  <a href="https://stackoverflow.com/questions/42151544/is-there-any-reason-to-use-rabbitmq-over-kafka">Is there any reason to use RabbitMQ over Kafka?</a>, I can read the following statements:</p>
  
  <blockquote>
    <p>RabbitMQ will keep all states about consumed/acknowledged/unacknowledged messages while Kafka doesn't</p>
  </blockquote>
  
  <p>or</p>
  
  <blockquote>
    <p>Exactly once guarantees are hard to get with Kafka.</p>
  </blockquote>
  
  <p>This is not what I understand by reading the official Kafka documentation at:
  <a href="https://kafka.apache.org/documentation/#design_consumerposition" rel="noreferrer">https://kafka.apache.org/documentation/#design_consumerposition</a></p>
  
  <p>The previous documentation states that Kafka does not use a traditional acknowledge implementation (as RabbitMQ). Instead they rely on the relationship partition-consumer and offset...</p>
  
  <blockquote>
    <p>This makes the equivalent of message acknowledgements very cheap</p>
  </blockquote>
  
  <p>Could somebody please explain why "only once consumption guarantee" in Kafka is difficult to achieve? and How this differs from Kafka vs other more traditional Message Broker as RabbitMQ? What am I missing?</p>