注:本文依赖于kafka-0.10.0.1-src
kafka消息格式是经过多个版本的演变的,本文只说0.10.0.1版本的消息格式。
消息格式如图1所示:
CRC:用于校验消息内容。占4个字节
MAGIC:用于标识kafka版本,默认是1。占1个字节
ATTRIBUTES:用于存储消息压缩使用的编码以及Timestamp类型。这个版本仅支持 gzip、snappy、lz4三种压缩格式。后三位如果是000则表示没有使用压缩,如果是001则表示是gzip压缩,如果是010则是snappy压缩,如果是011则是snappy压缩。第4位(从右数)如果为0,代表使用create time,如果为1代表append time。其余位保留。占1个字节
TIMESTAMP:时间戳。占8个字节
KEY_SIZE:用于标识KEY内容的长度K。占用4个字节
KEY:存储的是KEY的具体内容。占用K个字节。
VALUE_SIZE:主要标识VALUE的内容的长度V。占用4个字节。
VALUE:消息的真实内容。占用V个字节<