What is JoinGroup?
Triggers a rebalance: any new member, departing member, or subscription change causes all members to call JoinGroup and wait at a synchronization barrier. The leader (first joiner) receives all members' metadata and runs the partition assignor.
Wire Diagram
Request Header · flexible
message_size
int32 · 4B
api_key
int16 · 2B
api_version
int16 · 2B
correlation_id
int32 · 4B
client_id
string (compact)
tagged
var
JoinGroupRequest v9
GroupId
string (compact)
SessionTimeoutMs
int32 · 4B
RebalanceTimeoutMs
int32 · 4B
MemberId
string (compact)
GroupInstanceId?
string (compact)
ProtocolType
string (compact)
Reason?
string (compact)
tagged
var
Name
string (compact)
Metadata
bytes (compact)
tagged
var
Schema & Example
Schema { "GroupId": string, "SessionTimeoutMs": int32, "RebalanceTimeoutMs": int32, "MemberId": string, "GroupInstanceId": string?, "ProtocolType": string, "Protocols": [{ "Name": string, "Metadata": bytes }], "Reason": string? }
Example { "GroupId": "order-processors", "SessionTimeoutMs": 30000, "RebalanceTimeoutMs": 300000, "MemberId": "consumer-1-abc123", "GroupInstanceId": "instance-0", "ProtocolType": "consumer", "Protocols": [{ "Name": "orders", "Metadata": "<metadata>" }], "Reason": "shutting down" }