Class CooperativeStickyAssignor
- java.lang.Object
-
- org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor
-
- org.apache.kafka.clients.consumer.internals.AbstractStickyAssignor
-
- org.apache.kafka.clients.consumer.CooperativeStickyAssignor
-
- All Implemented Interfaces:
ConsumerPartitionAssignor
public class CooperativeStickyAssignor extends org.apache.kafka.clients.consumer.internals.AbstractStickyAssignor
A cooperative version of theAbstractStickyAssignor
. This follows the same (sticky) assignment logic asStickyAssignor
but allows for cooperative rebalancing while theStickyAssignor
follows the eager rebalancing protocol. SeeConsumerPartitionAssignor.RebalanceProtocol
for an explanation of the rebalancing protocols.Users should prefer this assignor for newer clusters.
To turn on cooperative rebalancing you must set all your consumers to use this
PartitionAssignor
, or implement a custom one that returnsRebalanceProtocol.COOPERATIVE
insupportedProtocols()
.IMPORTANT: if upgrading from 2.3 or earlier, you must follow a specific upgrade path in order to safely turn on cooperative rebalancing. See the upgrade guide for details.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.kafka.clients.consumer.internals.AbstractStickyAssignor
org.apache.kafka.clients.consumer.internals.AbstractStickyAssignor.MemberData
-
Nested classes/interfaces inherited from class org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor
org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor.MemberInfo
-
Nested classes/interfaces inherited from interface org.apache.kafka.clients.consumer.ConsumerPartitionAssignor
ConsumerPartitionAssignor.Assignment, ConsumerPartitionAssignor.GroupAssignment, ConsumerPartitionAssignor.GroupSubscription, ConsumerPartitionAssignor.RebalanceProtocol, ConsumerPartitionAssignor.Subscription
-
-
Constructor Summary
Constructors Constructor Description CooperativeStickyAssignor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Map<String,List<TopicPartition>>
assign(Map<String,Integer> partitionsPerTopic, Map<String,ConsumerPartitionAssignor.Subscription> subscriptions)
protected org.apache.kafka.clients.consumer.internals.AbstractStickyAssignor.MemberData
memberData(ConsumerPartitionAssignor.Subscription subscription)
String
name()
Unique name for this assignor (e.g.void
onAssignment(ConsumerPartitionAssignor.Assignment assignment, ConsumerGroupMetadata metadata)
Callback which is invoked when a group member receives its assignment from the leader.ByteBuffer
subscriptionUserData(Set<String> topics)
Return serialized data that will be included in theConsumerPartitionAssignor.Subscription
sent to the leader and can be leveraged inConsumerPartitionAssignor.assign(Cluster, GroupSubscription)
((e.g.List<ConsumerPartitionAssignor.RebalanceProtocol>
supportedProtocols()
Indicate which rebalance protocol this assignor works with; By default it should always work withConsumerPartitionAssignor.RebalanceProtocol.EAGER
.-
Methods inherited from class org.apache.kafka.clients.consumer.internals.AbstractStickyAssignor
isSticky
-
Methods inherited from class org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor
assign, partitions, put
-
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
-
-
-
-
Method Detail
-
name
public String name()
Description copied from interface:ConsumerPartitionAssignor
Unique 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
-
supportedProtocols
public List<ConsumerPartitionAssignor.RebalanceProtocol> supportedProtocols()
Description copied from interface:ConsumerPartitionAssignor
Indicate which rebalance protocol this assignor works with; By default it should always work withConsumerPartitionAssignor.RebalanceProtocol.EAGER
.
-
onAssignment
public void onAssignment(ConsumerPartitionAssignor.Assignment assignment, ConsumerGroupMetadata metadata)
Description copied from interface:ConsumerPartitionAssignor
Callback which is invoked when a group member receives its assignment from the leader.- Parameters:
assignment
- The local member's assignment as provided by the leader inConsumerPartitionAssignor.assign(Cluster, GroupSubscription)
metadata
- Additional metadata on the consumer (optional)
-
subscriptionUserData
public ByteBuffer subscriptionUserData(Set<String> topics)
Description copied from interface:ConsumerPartitionAssignor
Return serialized data that will be included in theConsumerPartitionAssignor.Subscription
sent to the leader and can be leveraged inConsumerPartitionAssignor.assign(Cluster, GroupSubscription)
((e.g. local host/rack information)- Parameters:
topics
- Topics subscribed to throughKafkaConsumer.subscribe(java.util.Collection)
and variants- Returns:
- nullable subscription user data
-
memberData
protected org.apache.kafka.clients.consumer.internals.AbstractStickyAssignor.MemberData memberData(ConsumerPartitionAssignor.Subscription subscription)
- Specified by:
memberData
in classorg.apache.kafka.clients.consumer.internals.AbstractStickyAssignor
-
assign
public Map<String,List<TopicPartition>> assign(Map<String,Integer> partitionsPerTopic, Map<String,ConsumerPartitionAssignor.Subscription> subscriptions)
- Overrides:
assign
in classorg.apache.kafka.clients.consumer.internals.AbstractStickyAssignor
-
-