conduktor.io ↗

Kafka Produce Changelog — Protocol Version History

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.

VersionKafkaChanges
ProduceRequest
v32.2
+ TransactionalId string
adds the transactional ID, which is used for authorization when attempting to write transactional data. Version 3 also adds support for Kafka Message Format v2.
v42.2
is the same as version 3, but the requester must be prepared to handle a KAFKA_STORAGE_ERROR.
v52.2
are the same as version 3.
v62.2
are the same as version 3.
v72.2
records can be produced using ZStandard compression. See KIP-110.
v82.4
response has RecordErrors and ErrorMessage. See KIP-467.
v92.8
~ Flexible encoding enabled FLEXIBLE
enables flexible versions.
v103.7
is the same as version 9 (KIP-951).
v113.8
adds support for new error code TRANSACTION_ABORTABLE (KIP-890).
v124.0
is the same as version 11 (KIP-890). Note when produce requests are used in transaction, if transaction V2 (KIP_890 part 2) is enabled, the produce request will also include the function for a AddPartitionsToTxn call. If V2 is disabled, the client can't use produce request version higher than 11 within a transaction.
v134.1
+ TopicId uuid
- Name string
replaces topic names with topic IDs (KIP-516). May return UNKNOWN_TOPIC_ID error code.
ProduceResponse
v32.2
is the same as version 2.
v42.2
added KAFKA_STORAGE_ERROR as a possible error code.
v52.2
+ LogStartOffset int64
added LogStartOffset to filter out spurious OutOfOrderSequenceExceptions on the client.
v62.2No changes
v72.2No changes
v82.4
+ RecordErrors []BatchIndexAndErrorMessage
+ BatchIndex int32
+ BatchIndexErrorMessage string
+ ErrorMessage string
added RecordErrors and ErrorMessage to include information about records that cause the whole batch to be dropped. See KIP-467 for details.
v92.8
~ Flexible encoding enabled FLEXIBLE
enables flexible versions.
v103.7
+ CurrentLeader LeaderIdAndEpoch
+ LeaderId int32
+ LeaderEpoch int32
+ NodeEndpoints []NodeEndpoint
+ NodeId int32
+ Host string
+ Port int32
+ Rack string
adds 'CurrentLeader' and 'NodeEndpoints' as tagged fields (KIP-951)
v113.8
adds support for new error code TRANSACTION_ABORTABLE (KIP-890).
v124.0
is the same as version 10 (KIP-890).
v134.1
+ TopicId uuid
- Name string
replaces topic names with topic IDs (KIP-516). May return UNKNOWN_TOPIC_ID error code.