use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConsumeRequest {
pub topic: String,
pub group_id: String,
#[serde(default = "default_start")]
pub start: String,
#[serde(default = "default_batch_size")]
pub batch_size: u32,
#[serde(default)]
pub partition_id: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout_seconds: Option<u64>,
#[serde(default)]
pub auto_ack: bool,
#[serde(default = "default_concurrency")]
pub concurrency_per_partition: u32,
}
fn default_start() -> String {
"latest".to_string()
}
fn default_batch_size() -> u32 {
10
}
fn default_concurrency() -> u32 {
1
}
impl Default for ConsumeRequest {
fn default() -> Self {
Self {
topic: String::new(),
group_id: String::new(),
start: default_start(),
batch_size: default_batch_size(),
partition_id: 0,
timeout_seconds: None,
auto_ack: false,
concurrency_per_partition: default_concurrency(),
}
}
}