conduktor.io ↗

Kafka ControllerRegistration Request Wire Format v0 — Binary Protocol Layout

What is ControllerRegistration?

Dedicated KRaft controller nodes (non-broker controllers) send this to register with the active controller on startup. This is the controller equivalent of BrokerRegistration, specific to deployments where controller nodes don't host topic partitions.

Related Errors

INVALID_REGISTRATION

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
ControllerRegistrationRequest v0
ControllerId int32 · 4B
IncarnationId uuid · 16B
ZkMigrationReady bool · 1B
Listeners array
Features array
tagged var
Name string (compact)
Host string (compact)
Port uint16 · 2B
SecurityProtocol int16 · 2B
tagged var
Name string (compact)
MinSupportedVersion int16 · 2B
MaxSupportedVersion int16 · 2B
tagged var

Schema & Example

Schema
{
  "ControllerId": int32,
  "IncarnationId": uuid,
  "ZkMigrationReady": bool,
  "Listeners": [{
      "Name": string,
      "Host": string,
      "Port": uint16,
      "SecurityProtocol": int16
  }],
  "Features": [{
      "Name": string,
      "MinSupportedVersion": int16,
      "MaxSupportedVersion": int16
  }]
}
Example
{
  "ControllerId": 0,
  "IncarnationId": "550e8400-e29b-41d4-a716-446655440000",
  "ZkMigrationReady": true,
  "Listeners": [{
      "Name": "orders",
      "Host": "broker-1.kafka.local",
      "Port": 9092,
      "SecurityProtocol": 1
  }],
  "Features": [{
      "Name": "orders",
      "MinSupportedVersion": 1,
      "MaxSupportedVersion": 1
  }]
}