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.
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
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 }] }