What is Produce?
Every producer sends this for every message publish, making it the dominant write path. With acks=all, the broker waits for all ISR replicas to acknowledge before responding; acks=1 returns after the leader writes locally; acks=0 is fire-and-forget with no loss detection.
Wire Diagram
Response Header
message_size
int32 · 4B
correlation_id
int32 · 4B
ProduceResponse v8
ThrottleTimeMs
int32 · 4B
Name
string
Index
int32 · 4B
ErrorCode
int16 · 2B
BaseOffset
int64 · 8B
LogAppendTimeMs
int64 · 8B
LogStartOffset
int64 · 8B
ErrorMessage?
string
BatchIndex
int32 · 4B
BatchIndexErrorMessage?
string
Schema & Example
Schema { "Responses": [{ "Name": string, "PartitionResponses": [{ "Index": int32, "ErrorCode": int16, "BaseOffset": int64, "LogAppendTimeMs": int64, "LogStartOffset": int64, "RecordErrors": [{ "BatchIndex": int32, "BatchIndexErrorMessage": string? }], "ErrorMessage": string? }] }], "ThrottleTimeMs": int32 }
Example { "Responses": [{ "Name": "orders", "PartitionResponses": [{ "Index": 3, "ErrorCode": 0, "BaseOffset": 284729, "LogAppendTimeMs": 1711648200000, "LogStartOffset": 284729, "RecordErrors": [{ "BatchIndex": 0, "BatchIndexErrorMessage": null }], "ErrorMessage": "NETWORK_EXCEPTION" }] }], "ThrottleTimeMs": 0 }