Class RoundRobinAssignor

  • All Implemented Interfaces:
    org.apache.kafka.clients.consumer.internals.PartitionAssignor

    public class RoundRobinAssignor
    extends org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor

    This class is not supported.

    The round robin assignor lays out all the available partitions and all the available consumers. It then proceeds to do a round robin assignment from partition to consumer. If the subscriptions of all consumer instances are identical, then the partitions will be uniformly distributed. (i.e., the partition ownership counts will be within a delta of exactly one across all consumers.) For example, suppose there are two consumers C0 and C1, two topics t0 and t1, and each topic has 3 partitions, resulting in partitions t0p0, t0p1, t0p2, t1p0, t1p1, and t1p2. The assignment will be: C0: [t0p0, t0p2, t1p1] C1: [t0p1, t1p0, t1p2] When subscriptions differ across consumer instances, the assignment process still considers each consumer instance in round robin fashion but skips over an instance if it is not subscribed to the topic. Unlike the case when subscriptions are identical, this can result in imbalanced assignments. For example, we have three consumers C0, C1, C2, and three topics t0, t1, t2, with 1, 2, and 3 partitions, respectively. Therefore, the partitions are t0p0, t1p0, t1p1, t2p0, t2p1, t2p2. C0 is subscribed to t0; C1 is subscribed to t0, t1; and C2 is subscribed to t0, t1, t2. That assignment will be: C0: [t0p0] C1: [t1p0] C2: [t1p1, t2p0, t2p1, t2p2]

    • Nested Class Summary

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

        org.apache.kafka.clients.consumer.internals.PartitionAssignor.Assignment, org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.List<TopicPartition> allPartitionsSorted​(java.util.Map<java.lang.String,​java.lang.Integer> partitionsPerTopic, java.util.Map<java.lang.String,​org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription> subscriptions)  
      java.util.Map<java.lang.String,​java.util.List<TopicPartition>> assign​(java.util.Map<java.lang.String,​java.lang.Integer> partitionsPerTopic, java.util.Map<java.lang.String,​org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription> subscriptions)  
      java.lang.String name()  
      • Methods inherited from class org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor

        assign, onAssignment, partitions, put, subscription
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RoundRobinAssignor

        public RoundRobinAssignor()
    • Method Detail

      • assign

        public java.util.Map<java.lang.String,​java.util.List<TopicPartition>> assign​(java.util.Map<java.lang.String,​java.lang.Integer> partitionsPerTopic,
                                                                                           java.util.Map<java.lang.String,​org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription> subscriptions)
        Specified by:
        assign in class org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor
      • allPartitionsSorted

        public java.util.List<TopicPartition> allPartitionsSorted​(java.util.Map<java.lang.String,​java.lang.Integer> partitionsPerTopic,
                                                                  java.util.Map<java.lang.String,​org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription> subscriptions)
      • name

        public java.lang.String name()