Class RangeAssignor
java.lang.Object
org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor
org.apache.kafka.clients.consumer.RangeAssignor
- All Implemented Interfaces:
- ConsumerPartitionAssignor
public class RangeAssignor
extends org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor
The range assignor works on a per-topic basis. For each topic, we lay out the available partitions in numeric order and the consumers in lexicographic order. We then divide the number of partitions by the total number of consumers to determine the number of partitions to assign to each consumer. If it does not evenly divide, then the first few consumers will have one extra partition.
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, t0p1, t1p0, t1p1]
- C1: [t0p2, t1p2]
group.instance.id to make the assignment behavior more sticky.
 For the above example, after one rolling bounce, group coordinator will attempt to assign new member.id towards consumers,
 for example C0 -> C3 C1 -> C2.
 The assignment could be completely shuffled to:
- C3 (was C0): [t0p2, t1p2] (before was [t0p0, t0p1, t1p0, t1p1])
- C2 (was C1): [t0p0, t0p1, t1p0, t1p1] (before was [t0p2, t1p2])
member.id relative order, and
 can be avoided by setting the group.instance.id.
 Consumers will have individual instance ids I1, I2. As long as
 1. Number of members remain the same across generation
 2. Static members' identities persist across generation
 3. Subscription pattern doesn't change for any member
 The assignment will always be:
- I0: [t0p0, t0p1, t1p0, t1p1]
- I1: [t0p2, t1p2]
- 
Nested Class SummaryNested classes/interfaces inherited from class org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignororg.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor.MemberInfoNested classes/interfaces inherited from interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignorConsumerPartitionAssignor.Assignment, ConsumerPartitionAssignor.GroupAssignment, ConsumerPartitionAssignor.GroupSubscription, ConsumerPartitionAssignor.RebalanceProtocol, ConsumerPartitionAssignor.Subscription
- 
Field SummaryFields
- 
Constructor SummaryConstructors
- 
Method SummaryMethods inherited from class org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignorassign, partitions, putMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignoronAssignment, subscriptionUserData, supportedProtocols, version
- 
Field Details- 
RANGE_ASSIGNOR_NAME- See Also:
 
 
- 
- 
Constructor Details- 
RangeAssignorpublic RangeAssignor()
 
- 
- 
Method Details- 
nameDescription copied from interface:ConsumerPartitionAssignorUnique name for this assignor (e.g. "range" or "roundrobin" or "sticky"). Note, this is not required to be the same as the class name specified inConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG- Returns:
- non-null unique name
 
- 
assignpublic Map<String,List<TopicPartition>> assign(Map<String, Integer> partitionsPerTopic, Map<String, ConsumerPartitionAssignor.Subscription> subscriptions) - Specified by:
- assignin class- org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor
 
 
-