Class KafkaSourceEnumerator

java.lang.Object
org.apache.flink.connector.kafka.source.enumerator.KafkaSourceEnumerator
All Implemented Interfaces:
AutoCloseable, org.apache.flink.api.common.state.CheckpointListener, org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>

@Internal public class KafkaSourceEnumerator extends Object implements org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>
The enumerator class for Kafka source.
  • Constructor Details

  • Method Details

    • start

      public void start()
      Start the enumerator.

      Depending on partitionDiscoveryIntervalMs, the enumerator will trigger a one-time partition discovery, or schedule a callable for discover partitions periodically.

      The invoking chain of partition discovery would be:

      1. getSubscribedTopicPartitions() in worker thread
      2. checkPartitionChanges(java.util.Set<org.apache.kafka.common.TopicPartition>, java.lang.Throwable) in coordinator thread
      3. initializePartitionSplits(org.apache.flink.connector.kafka.source.enumerator.KafkaSourceEnumerator.PartitionChange) in worker thread
      4. handlePartitionSplitChanges(org.apache.flink.connector.kafka.source.enumerator.KafkaSourceEnumerator.PartitionSplitChange, java.lang.Throwable) in coordinator thread
      Specified by:
      start in interface org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>
    • handleSplitRequest

      public void handleSplitRequest(int subtaskId, @Nullable String requesterHostname)
      Specified by:
      handleSplitRequest in interface org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>
    • addSplitsBack

      public void addSplitsBack(List<KafkaPartitionSplit> splits, int subtaskId)
      Specified by:
      addSplitsBack in interface org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>
    • addReader

      public void addReader(int subtaskId)
      Specified by:
      addReader in interface org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>
    • snapshotState

      public KafkaSourceEnumState snapshotState(long checkpointId) throws Exception
      Specified by:
      snapshotState in interface org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>
      Throws:
      Exception
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface org.apache.flink.api.connector.source.SplitEnumerator<KafkaPartitionSplit,KafkaSourceEnumState>