Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-2350

Add KafkaConsumer pause capability

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 0.9.0.0
    • consumer
    • None

    Description

      There are some use cases in stream processing where it is helpful to be able to pause consumption of a topic. For example, when joining two topics, you may need to delay processing of one topic while you wait for the consumer of the other topic to catch up. The new consumer currently doesn't provide a nice way to do this. If you skip calls to poll() or if you unsubscribe, then a rebalance will be triggered and your partitions will be reassigned to another consumer. The desired behavior is instead that you keep the partition assigned and simply

      One way to achieve this would be to add two new methods to KafkaConsumer:

      void pause(TopicPartition... partitions);
      void resume(TopicPartition... partitions);
      

      Here is the expected behavior of pause/resume:

      • When a partition is paused, calls to KafkaConsumer.poll will not initiate any new fetches for that partition.
      • After the partition is resumed, fetches will begin again.
      • While a partition is paused, seek() and position() can still be used to advance or query the current position.
      • Rebalance does not preserve pause/resume state.

      Attachments

        Activity

          People

            hachikuji Jason Gustafson
            hachikuji Jason Gustafson
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: