【Kafka零基础学习】Broker Produce一张图详解

Produce消息格式

注意: 此消息格式只针对api_key为0,api_version为2。

【Kafka零基础学习】Broker Produce一张图详解_第1张图片
image.png

字段说明

Request Header

  • api_key:消息类型。
  • api_version:消息格式版本。
  • correlation_id:序号,由客户端产生,单调递增,服务端不做任何修改,在Response中会回传给客户端。
  • client_id length:client_id值所占字节长度。
  • client_id value:客户端id,可为null。

Request Body

  • acks:指定服务端响应此请求之前,需要有多少Replica成功复制了此请求的消息。-1表示整个ISR都完成了复制。
  • timeout:超时时间,单位是ms。
  • topic array size:topic数组大小,也即包含的topic个数。
  • topic name length:topic名占用字节长度。
  • topic name value:topic名占用字节空间。
  • partition array size:partition数组大小,也即包含的partition个数。
  • partition_id:partition编号。
  • record_set length:partition数据占用字节长度。
  • record_set value:partition数据占用字节空间。
  • offset:根据magic选定是相对于partition还是segment的偏移量。
  • size:message data的大小。
  • CRC32:消息的检验码。
  • magic:魔术标识,与消息格式有关,取值为0或1。当magic为0时,消息的offset使用绝对offset且消息格式中没有timestamp的部分;当magic为1时,消息的offset使用相对offset且消息格式中存在timestamp部分。所以,magic值不同,消息的长度时不同的。
  • attributes:第0~2位表示消息使用的压缩类型,0表示无压缩,1表示gzip压缩,2表示snappy压缩,3表示lz4压缩。第3位表示时间戳类型,0表示创建时间,1表示追加时间。
  • timestamp:时间戳,其含义由attributes第3位决定。
  • key length:key占用字节长度。
  • key value:key占用空间。
  • value length:消息value占用字节长度。
  • value:消息value占用空间。

你可能感兴趣的:(【Kafka零基础学习】Broker Produce一张图详解)