The current KafkaJS implementation only supports the RoundRobin assigners. These use eager rebalancing, which causes all consumers in a group to stop consuming and drop their partition assignments during a rebalance — even if their assignments won't change. This leads to unnecessary downtime and increased rebalance latency, especially in large consumer groups.
Describe the solution you'd like
Implement the CooperativeStickyAssigner (also known as incremental cooperative rebalancing), which is the default assigner in the modern Java Kafka client (CooperativeStickyAssignor). This strategy:
Builds on the StickyAssigner to minimize partition movement across rebalances
Uses incremental/cooperative rebalancing — only partitions that need to move are revoked, allowing consumers to continue processing unaffected partitions during a rebalance
Requires multiple rebalance rounds to safely migrate partitions, avoiding a full stop-the-world pause
This dramatically reduces rebalance impact in production environments.
References:
KIP-429: Kafka Consumer Incremental Rebalance Protocol
KIP-54: Sticky Partition Assignment Strategy
confluent-kafka-python CooperativeSticky implementation
Additional context
This is being introduced as a new built-in assigner alongside RoundRobinAssigner and PartitionAssigner. Consumers must opt in by setting partitionAssigners: [CooperativeStickyAssigner] in their configuration. Mixed assigner groups (e.g. one consumer using eager, another using cooperative) must be handled carefully per the KIP-429 migration path.
The current KafkaJS implementation only supports the RoundRobin assigners. These use eager rebalancing, which causes all consumers in a group to stop consuming and drop their partition assignments during a rebalance — even if their assignments won't change. This leads to unnecessary downtime and increased rebalance latency, especially in large consumer groups.
Describe the solution you'd like
Implement the CooperativeStickyAssigner (also known as incremental cooperative rebalancing), which is the default assigner in the modern Java Kafka client (CooperativeStickyAssignor). This strategy:
Builds on the StickyAssigner to minimize partition movement across rebalances
Uses incremental/cooperative rebalancing — only partitions that need to move are revoked, allowing consumers to continue processing unaffected partitions during a rebalance
Requires multiple rebalance rounds to safely migrate partitions, avoiding a full stop-the-world pause
This dramatically reduces rebalance impact in production environments.
References:
KIP-429: Kafka Consumer Incremental Rebalance Protocol
KIP-54: Sticky Partition Assignment Strategy
confluent-kafka-python CooperativeSticky implementation
Additional context
This is being introduced as a new built-in assigner alongside RoundRobinAssigner and PartitionAssigner. Consumers must opt in by setting partitionAssigners: [CooperativeStickyAssigner] in their configuration. Mixed assigner groups (e.g. one consumer using eager, another using cooperative) must be handled carefully per the KIP-429 migration path.