...
Produce Request
Code Block |
---|
v0, v1 (supported in 0.9.0 or later) and v2 (supported in 0.10.0 or later)
ProduceRequest => RequiredAcks Timeout [TopicName [Partition MessageSetSize MessageSet]]
RequiredAcks => int16
Timeout => int32
Partition => int32
MessageSetSize => int32
|
Produce Request on or after v1 indicates the client can parse the quota throttle time in the Produce Response.
Produce Request on or after v2 indicates the client can parse the timestamp field in the produce Response.
Field | Description |
---|---|
RequiredAcks | This field indicates how many acknowledgements the servers should receive before responding to the request. If it is 0 the server will not send any response (this is the only case where the server will not reply to a request). If it is 1, the server will wait the data is written to the local log before sending a response. If it is -1 the server will block until the message is committed by all in sync replicas before sending a response. For any number > 1 the server will block waiting for this number of acknowledgements to occur (but the server will never wait for more acknowledgements than there are in-sync replicas). |
Timeout | This provides a maximum time in milliseconds the server can await the receipt of the number of acknowledgements in RequiredAcks. The timeout is not an exact limit on the request time for a few reasons: (1) it does not include network latency, (2) the timer begins at the beginning of the processing of this request so if many requests are queued due to server overload that wait time will not be included, (3) we will not terminate a local write so if the local write time exceeds this timeout it will not be respected. To get a hard timeout of this type the client should use the socket timeout. |
TopicName | The topic that data is being published to. |
Partition | The partition that data is being published to. |
MessageSetSize | The size, in bytes, of the message set that follows. |
MessageSet | A set of messages in the standard format described above. |
...
Code Block |
---|
v0 ProduceResponse => [TopicName [Partition ErrorCode Offset]] TopicName => string Partition => int32 ErrorCode => int16 Offset => int64 v1 (supported sincein 0.9.0 or later) ProduceResponse => [TopicName [Partition ErrorCode Offset]] ThrottleTime TopicName => string Partition => int32 ErrorCode => int16 Offset => int64 ThrottleTime => int32 v2 (supported sincein 0.10.0 or later) ProduceResponse => [TopicName [Partition ErrorCode Offset Timestamp]] ThrottleTime TopicName => string Partition => int32 ErrorCode => int16 Offset => int64 Timestamp => int64 ThrottleTime => int32 |
...
Code Block |
---|
v0 FetchResponse => [TopicName [Partition ErrorCode HighwaterMarkOffset MessageSetSize MessageSet]] TopicName => string Partition => int32 ErrorCode => int16 HighwaterMarkOffset => int64 MessageSetSize => int32 v1 (supported in 0.9.0 or later) and v2 (sincesupported in 0.10.0 or later) FetchResponse => [TopicName [Partition ErrorCode HighwaterMarkOffset MessageSetSize MessageSet]] ThrottleTime TopicName => string Partition => int32 ErrorCode => int16 HighwaterMarkOffset => int64 MessageSetSize => int32 ThrottleTime => int32 |
Field | Description |
---|---|
TopicName | The name of the topic this response entry is for. |
Partition | The id of the partition this response is for. |
HighwaterMarkOffset | The offset at the end of the log for this partition. This can be used by the client to determine how many messages behind the end of the log they are. |
MessageSetSize | The size in bytes of the message set for this partition |
MessageSet | The message data fetched from this partition, in the format described above. |
ThrottleTime | Duration in milliseconds for which the request was throttled due to quota violation. (Zero if the request did not violate any quota.) |
...
Per the comment on
Jira | ||||
---|---|---|---|---|
|
Code Block |
---|
v0 and v1 (sincesupported in 0.8.2 or after): OffsetFetchRequest => ConsumerGroup [TopicName [Partition]] ConsumerGroup => string TopicName => string Partition => int32 |
Offset Fetch Response
Code Block |
---|
v0 and v1 (sincesupported in 0.8.2 or after): OffsetFetchResponse => [TopicName [Partition Offset Metadata ErrorCode]] TopicName => string Partition => int32 Offset => int64 Metadata => string ErrorCode => int16 |
...
The following are the numeric codes that the ApiKey in the request can take for each of the above request types.
API name | ApiKey Value | Current Version |
---|---|---|
ProduceRequest | 0 | 2|
FetchRequest | 1 | 2|
OffsetRequest | 2 | 0 |
MetadataRequest | 3 | 0|
Non-user facing control APIs | 4-7 | |
OffsetCommitRequest | 8 | 2|
OffsetFetchRequest | 9 | 1 |
GroupCoordinatorRequest | 10 | 0 |
JoinGroupRequest | 11 | 0 |
HeartbeatRequest | 12 | 0 |
LeaveGroupRequest | 13 | 0 |
SyncGroupRequest | 140 | |
DescribeGroupsRequest | 15 | 0 |
ListGroupsRequest | 160 |
Error Codes
We use numeric codes to indicate what problem occurred on the server. These can be translated by the client into exceptions or whatever the appropriate error handling mechanism in the client language. Here is a table of the error codes currently in use:
...