Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).

Motivation

...

There are several multivations to add a close method with timeout in the producer.

  1. Sometimes, user will want to close a producer wiithin a bounded time to avoid blocking on producer.close() for too long.
  2. One specific use case of 1) is that in some scenarios, user will want to close the produce immediately and purge all the unsent messages both in RecordAccumulator. (e.g. to preserve order if a send failed). Current KafkaProducer.close() method will try to send those messages. So we need to provide an interface that allow user to choose to close producer in which way.

Public Interfaces

Add another interface:

...

  1.  Add a forceClose flag to sender.
  2. When forceClose flag is set, sender will not send any more messages but purge fail all the messages in RecordAccumulator and wake up the threads waiting on a callback. These threads may be doing:
    1. synchronized send
    2. flush()
  3. Cleanup metrics and release other resources.

...