0
0
Kafkadevops~10 mins

Static group membership in Kafka - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - Static group membership
Start Consumer
Join Group Request
Static Member ID Provided?
NoAssign Dynamic Member ID
|Yes
Join Group with Static Member ID
Group Coordinator Accepts
Consumer Joins Group
Consumer Maintains Session
Rebalance Triggered?
NoContinue Processing
Yes
Static Member Rejoins with Same ID
Group Stabilizes Without Losing Member
Continue Processing
The consumer joins a group using a static member ID to keep membership stable across restarts, avoiding unnecessary rebalances.
Execution Sample
Kafka
consumerProps.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");
consumerProps.put(ConsumerConfig.GROUP_INSTANCE_ID_CONFIG, "consumer-1");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(consumerProps);
consumer.subscribe(Collections.singletonList("my-topic"));
consumer.poll(Duration.ofMillis(100));
This code creates a Kafka consumer with a static group instance ID to join a consumer group with static membership.
Process Table
StepActionStatic Member ID Provided?Group Coordinator ResponseResult
1Consumer starts and sends JoinGroup requestYes (consumer-1)Accepts static memberConsumer joins group with static ID
2Consumer polls messagesYes (consumer-1)Maintains sessionConsumer processes messages
3Consumer restarts and re-joins groupYes (consumer-1)Recognizes static memberNo rebalance triggered, session continues
4Another consumer joins with dynamic IDNoTriggers rebalanceGroup rebalances, static member remains stable
5Static member leaves groupYes (consumer-1)Removes memberGroup rebalances to exclude static member
💡 Execution stops when consumer leaves group or application ends.
Status Tracker
VariableStartAfter Step 1After Step 3After Step 4Final
memberIdnullconsumer-1consumer-1consumer-1null
groupStateemptyjoinedjoinedrebalancingleft
rebalanceNeededfalsefalsefalsetruefalse
Key Moments - 3 Insights
Why does the group not rebalance when the static member restarts?
Because the static member rejoins with the same member ID (see execution_table step 3), the coordinator keeps the member stable and avoids rebalance.
What happens if a consumer joins without a static member ID?
The group coordinator treats it as a dynamic member, which can trigger a rebalance (see execution_table step 4).
Why is the memberId variable null at the start and final steps?
At start, the consumer has not joined yet, so memberId is null; at final, after leaving the group, memberId resets to null (see variable_tracker).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what does the group coordinator do when the static member rejoins?
ATriggers a rebalance
BRejects the member
CRecognizes static member and avoids rebalance
DAssigns a new dynamic member ID
💡 Hint
Check the 'Group Coordinator Response' column at step 3 in execution_table
According to variable_tracker, what is the value of 'rebalanceNeeded' after step 4?
Afalse
Btrue
Cnull
Dundefined
💡 Hint
Look at the 'rebalanceNeeded' row and the 'After Step 4' column in variable_tracker
If the static member ID was not provided at step 1, what would likely happen?
AConsumer joins as dynamic member, possibly triggering rebalance
BGroup coordinator rejects the join
CConsumer joins with static ID anyway
DConsumer cannot join the group
💡 Hint
Refer to execution_table step 4 where a consumer without static ID triggers rebalance
Concept Snapshot
Static group membership in Kafka:
- Use GROUP_INSTANCE_ID_CONFIG to set static member ID
- Static members keep same ID across restarts
- Avoids unnecessary group rebalances
- Coordinator recognizes static IDs to maintain stability
- Helps improve consumer group stability and performance
Full Transcript
Static group membership in Kafka allows consumers to join a group with a fixed member ID. This ID is set using the GROUP_INSTANCE_ID_CONFIG property. When a consumer restarts, it uses the same static ID to rejoin the group. The group coordinator recognizes this and avoids triggering a rebalance, keeping the group stable. If a consumer joins without a static ID, it is treated as dynamic and may cause rebalances. Variables like memberId track the consumer's identity, and groupState tracks the membership status. This feature improves consumer group stability by reducing unnecessary rebalances.