#![allow(dead_code)]
use super::types::{Acks, IsolationLevel, OffsetReset};
use std::time::Duration;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum Compression {
#[default]
None,
Snappy,
Lz4,
Zstd,
}
#[derive(Debug, Clone)]
pub struct ProducerConfig {
pub bootstrap_servers: String,
pub acks: Acks,
pub idempotence: bool,
pub transactional_id: Option<String>,
pub linger: Duration,
pub batch_size: usize,
pub max_in_flight: u32,
pub request_timeout: Duration,
pub compression: Compression,
pub retries: u32,
pub retry_backoff: Duration,
}
impl Default for ProducerConfig {
fn default() -> Self {
Self {
bootstrap_servers: "localhost:6379".to_string(),
acks: Acks::All,
idempotence: false,
transactional_id: None,
linger: Duration::from_millis(5),
batch_size: 16 * 1024, max_in_flight: 5,
request_timeout: Duration::from_secs(30),
compression: Compression::None,
retries: 3,
retry_backoff: Duration::from_millis(100),
}
}
}
#[derive(Debug, Clone)]
pub struct ConsumerConfig {
pub bootstrap_servers: String,
pub group_id: Option<String>,
pub auto_commit: bool,
pub auto_commit_interval: Duration,
pub auto_offset_reset: OffsetReset,
pub isolation_level: IsolationLevel,
pub max_poll_records: u32,
pub max_poll_interval: Duration,
pub session_timeout: Duration,
pub heartbeat_interval: Duration,
pub fetch_min_bytes: usize,
pub fetch_max_bytes: usize,
pub fetch_max_wait: Duration,
}
impl Default for ConsumerConfig {
fn default() -> Self {
Self {
bootstrap_servers: "localhost:6379".to_string(),
group_id: None,
auto_commit: true,
auto_commit_interval: Duration::from_secs(5),
auto_offset_reset: OffsetReset::Latest,
isolation_level: IsolationLevel::ReadUncommitted,
max_poll_records: 500,
max_poll_interval: Duration::from_secs(300),
session_timeout: Duration::from_secs(45),
heartbeat_interval: Duration::from_secs(3),
fetch_min_bytes: 1,
fetch_max_bytes: 50 * 1024 * 1024, fetch_max_wait: Duration::from_millis(500),
}
}
}