conduktor.io ↗

Kafka ShareAcknowledge Request Wire Format v2 — Binary Protocol Layout

What is ShareAcknowledge?

Share group consumers mark fetched records as accepted (committed), released (put back), or rejected (dead-letter) without fetching new records (KIP-932). The ability to reject records makes share groups suitable for workloads where failed records should route to a DLQ rather than retry forever.

Related Errors

FENCED_STATE_EPOCH · GROUP_AUTHORIZATION_FAILED · INVALID_RECORD_STATE · INVALID_REQUEST · INVALID_SHARE_SESSION_EPOCH · SHARE_SESSION_NOT_FOUND · UNSUPPORTED_VERSION

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
ShareAcknowledgeRequest v2
GroupId? string (compact)
MemberId? string (compact)
ShareSessionEpoch int32 · 4B
IsRenewAck bool · 1B
Topics array
tagged var
TopicId uuid · 16B
Partitions array
tagged var
PartitionIndex int32 · 4B
AcknowledgementBatches array
tagged var
FirstOffset int64 · 8B
LastOffset int64 · 8B
AcknowledgeTypes []int8
tagged var

Schema & Example

Schema
{
  "GroupId": string?,
  "MemberId": string?,
  "ShareSessionEpoch": int32,
  "IsRenewAck": bool,
  "Topics": [{
      "TopicId": uuid,
      "Partitions": [{
          "PartitionIndex": int32,
          "AcknowledgementBatches": [{
              "FirstOffset": int64,
              "LastOffset": int64,
              "AcknowledgeTypes": [int8]
          }]
      }]
  }]
}
Example
{
  "GroupId": "order-processors",
  "MemberId": null,
  "ShareSessionEpoch": 12,
  "IsRenewAck": true,
  "Topics": [{
      "TopicId": "550e8400-e29b-41d4-a716-446655440000",
      "Partitions": [{
          "PartitionIndex": 3,
          "AcknowledgementBatches": [{
              "FirstOffset": 150382,
              "LastOffset": 150382,
              "AcknowledgeTypes": [...]
          }]
      }]
  }]
}