title: Difference between kafka idempotent and transactional producer setup?
body: <p>When setting up a kafka producer to use idempotent behaviour, and transactional behaviour:</p>
  
  <p>I understand that for idempotency we set:
  <code>enable.idempotence=true</code>
  and that by changing this one flag on our producer, we are guaranteed exactly-once event delivery?</p>
  
  <p>and for transactions, we must go further and set the <code>transaction.id=&lt;some value&gt;</code>
  but by setting this value, it <em>also</em> sets idempotence to true? </p>
  
  <p>Also, by setting one or both of the above to true, the producer will also set acks=all.</p>
  
  <p>With the above should I be able to add 'exactly once delivery' by simply changing the enable idempotency setting? If i wanted to go further and enable transactional support, On the Consumer side, I would only need to change their setting, <code>isolation.level=read_committed</code>? Does this image reflect how to setup the <a href="https://github.com/apache/kafka/blob/2.5/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java#L149" rel="noreferrer">producer</a> in terms of EOS? </p>
  
  <p><a href="https://i.stack.imgur.com/ijVaL.png" rel="noreferrer"><img src="https://i.stack.imgur.com/ijVaL.png" alt="enter image description here"></a></p>