Versions Compared

Key

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

...

  1. While the partition-revoked callback method is waiting, the poll loop is waiting for the poll to complete. As a consequence all partitions can no longer make progress and total throughput plummets. This is especially relevant for cooperative rebalancing where only a few partitions are revoked at a time.
  2. Keeping track of which records are being processed can be non-trivial. This challenge is compounded by having to share this information with the rebalance listener.
  3. When an async runtime (for example: Kotlin coroutines, Pekko, ZIO, Cats Effect) is used, the single-thread consumer lock makes it very hard to call the consumer from the callback. (See KIP-944.)
  4. Even though processing is asynchronous, offsets must be committed in order.
  5. For better throughput, offsets should be aggregated before committing.

...