What is InitProducerId?
Every idempotent or transactional producer calls this before sending records to obtain a producer ID and epoch. The epoch prevents zombie producers: a restarted instance bumps the epoch, and late-arriving writes from the old instance are rejected with INVALID_PRODUCER_EPOCH.
Wire Diagram
Request Header
message_size
int32 · 4B
api_key
int16 · 2B
api_version
int16 · 2B
correlation_id
int32 · 4B
client_id
string
InitProducerIdRequest v0
TransactionalId?
string
TransactionTimeoutMs
int32 · 4B
Schema & Example
Schema { "TransactionalId": string?, "TransactionTimeoutMs": int32 }
Example { "TransactionalId": "tx-orders-001", "TransactionTimeoutMs": 5000 }