Updated schemas
The latest update introduces the changes to the PollMessages and GetConsumerOffset commands response schema, as well as the Stream, Topic and Partition structs extended with created_at field.
Breaking changes
Breaking changes have been introduced with the commit #670a8ba. The available iggy crate supports these changes since version 0.0.60.
PollMessages
By default, the PollMessages used to return Vec<Message> as a response, which has been changed to PolledMessages struct, that contains the partition_id, current_offset and messages field. The reason for this change was to provide more information about the current offset, and the partition from which the messages have been fetched - this might be especially useful when using the consumer groups feature, where the partition is calculated on the server-side.
pub struct PolledMessages {
pub partition_id: u32,
pub current_offset: u64,
pub messages: Vec<Message>,
}
Serialization:
Partition ID (4 bytes) + Current offset (8 bytes) + Messages count (4 bytes) + Messages (N bytes)
GetConsumerOffset
Previously, the GetConsumerOffset command used to return u64 as a response, which has been changed to ConsumerOffsetInfo struct, that contains the partition_id, current_offset and stored_offset field. Similar to the PollMessages response update, the additional data might be helpful when using the consumer groups feature.
pub struct ConsumerOffsetInfo {
pub partition_id: u32,
pub current_offset: u64,
pub stored_offset: u64,
}
Serialization:
Partition ID (4 bytes) + Current offset (8 bytes) + Stored offset (8 bytes)
Stream, Topic, Partition
The Stream, Topic and Partition structs (along with the additional Details models when fetching the single object, not a list) have been extended with the created_at field, which contains the timestamp of the creation time (EPOCH in microseconds).
The created_at field which is u64 (8 bytes) is always serialized right after the id field, and then the remaining fields follow.