conduktor.io ↗

Kafka OffsetFetch Request Wire Format v9 — Binary Protocol Layout

What is OffsetFetch?

Consumers call this on startup or after a rebalance to recover their last committed position, and kafka-consumer-groups.sh --describe uses it to show lag. Returns UNKNOWN_TOPIC_OR_PARTITION if the group never committed to a partition, meaning auto.offset.reset applies.

Related Errors

COORDINATOR_NOT_AVAILABLE · GROUP_AUTHORIZATION_FAILED · INVALID_GROUP_ID · NOT_COORDINATOR · TOPIC_AUTHORIZATION_FAILED · UNKNOWN_TOPIC_ID · UNSTABLE_OFFSET_COMMIT

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
OffsetFetchRequest v9
Groups array
RequireStable bool · 1B
tagged var
GroupId string (compact)
MemberId? string (compact)
MemberEpoch int32 · 4B
Topics? array
tagged var
Name string (compact)
PartitionIndexes []int32
tagged var

Schema & Example

Schema
{
  "Groups": [{
      "GroupId": string,
      "MemberId": string?,
      "MemberEpoch": int32,
      "Topics": [{
          "Name": string,
          "PartitionIndexes": [int32]
      }]?
  }],
  "RequireStable": bool
}
Example
{
  "Groups": [{
      "GroupId": "order-processors",
      "MemberId": "consumer-1-abc123",
      "MemberEpoch": 12,
      "Topics": [{
          "Name": "orders",
          "PartitionIndexes": [1, 2, 3]
      }]?
  }],
  "RequireStable": true
}