table NameValue { name:string (key); value:string; } table Message { seq_delta:int32 (id:0); ts_ms_delta:int32 (id:1); properties:[NameValue] (id:2); key:string (id:3); // bytes data:string (id:4); // bytes } table MessageBatch { producer_id:int32 (id:0); producer_epoch:int32 (id:1); segment_id:int32 (id:2); flags: int32 (id:3); segment_seq_base:int64 (id:4); segment_seq_max_delta:int32 (id:5); ts_ms_base:int64 (id:6); ts_ms_max_delta:int32 (id:7); messages: [Message] (id:8); }