Class StreamsPartitionAssignor

  • All Implemented Interfaces:
    org.apache.kafka.clients.consumer.ConsumerPartitionAssignor, org.apache.kafka.common.Configurable

    public class StreamsPartitionAssignor
    extends java.lang.Object
    implements org.apache.kafka.clients.consumer.ConsumerPartitionAssignor, org.apache.kafka.common.Configurable
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor

        org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.Assignment, org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.GroupAssignment, org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.GroupSubscription, org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.RebalanceProtocol, org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.Subscription
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.GroupAssignment assign​(org.apache.kafka.common.Cluster metadata, org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.GroupSubscription groupSubscription)  
      void configure​(java.util.Map<java.lang.String,​?> configs)
      We need to have the PartitionAssignor and its StreamThread to be mutually accessible since the former needs later's cached metadata while sending subscriptions, and the latter needs former's returned assignment when adding tasks.
      protected static java.util.Map<TaskId,​java.util.Set<org.apache.kafka.common.TopicPartition>> getActiveTasks​(java.util.List<org.apache.kafka.common.TopicPartition> partitions, AssignmentInfo info)  
      protected void handleRebalanceStart​(java.util.Set<java.lang.String> topics)  
      protected boolean maybeUpdateSubscriptionVersion​(int receivedAssignmentMetadataVersion, int latestCommonlySupportedVersion)  
      java.lang.String name()  
      void onAssignment​(org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.Assignment assignment, org.apache.kafka.clients.consumer.ConsumerGroupMetadata metadata)  
      java.nio.ByteBuffer subscriptionUserData​(java.util.Set<java.lang.String> topics)  
      java.util.List<org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.RebalanceProtocol> supportedProtocols()  
      protected TaskManager taskManager()  
      protected byte uniqueField()  
      protected java.lang.String userEndPoint()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor

        version
    • Field Detail

      • PARTITION_COMPARATOR

        protected static final java.util.Comparator<org.apache.kafka.common.TopicPartition> PARTITION_COMPARATOR
      • usedSubscriptionMetadataVersion

        protected int usedSubscriptionMetadataVersion
    • Constructor Detail

      • StreamsPartitionAssignor

        public StreamsPartitionAssignor()
    • Method Detail

      • configure

        public void configure​(java.util.Map<java.lang.String,​?> configs)
        We need to have the PartitionAssignor and its StreamThread to be mutually accessible since the former needs later's cached metadata while sending subscriptions, and the latter needs former's returned assignment when adding tasks.
        Specified by:
        configure in interface org.apache.kafka.common.Configurable
        Throws:
        org.apache.kafka.common.KafkaException - if the stream thread is not specified
      • name

        public java.lang.String name()
        Specified by:
        name in interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor
      • supportedProtocols

        public java.util.List<org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.RebalanceProtocol> supportedProtocols()
        Specified by:
        supportedProtocols in interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor
      • subscriptionUserData

        public java.nio.ByteBuffer subscriptionUserData​(java.util.Set<java.lang.String> topics)
        Specified by:
        subscriptionUserData in interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor
      • assign

        public org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.GroupAssignment assign​(org.apache.kafka.common.Cluster metadata,
                                                                                                  org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.GroupSubscription groupSubscription)
        Specified by:
        assign in interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor
      • maybeUpdateSubscriptionVersion

        protected boolean maybeUpdateSubscriptionVersion​(int receivedAssignmentMetadataVersion,
                                                         int latestCommonlySupportedVersion)
      • onAssignment

        public void onAssignment​(org.apache.kafka.clients.consumer.ConsumerPartitionAssignor.Assignment assignment,
                                 org.apache.kafka.clients.consumer.ConsumerGroupMetadata metadata)
        Specified by:
        onAssignment in interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor
        Throws:
        TaskAssignmentException - if there is no task id for one of the partitions specified
      • getActiveTasks

        protected static java.util.Map<TaskId,​java.util.Set<org.apache.kafka.common.TopicPartition>> getActiveTasks​(java.util.List<org.apache.kafka.common.TopicPartition> partitions,
                                                                                                                          AssignmentInfo info)
      • userEndPoint

        protected java.lang.String userEndPoint()
      • uniqueField

        protected byte uniqueField()
      • handleRebalanceStart

        protected void handleRebalanceStart​(java.util.Set<java.lang.String> topics)