use std::time::Duration;
pub trait MetricsCollector: Send + Sync + 'static {
fn record_publish(&self, topic: &str, duration: Duration, success: bool);
fn record_consume(&self, topic: &str, duration: Duration, success: bool);
}
#[derive(Debug, Clone, Copy, Default)]
pub struct NoopMetrics;
impl MetricsCollector for NoopMetrics {
fn record_publish(&self, _topic: &str, _duration: Duration, _success: bool) {}
fn record_consume(&self, _topic: &str, _duration: Duration, _success: bool) {}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn noop_metrics_does_not_panic() {
let m = NoopMetrics;
m.record_publish("t", Duration::from_millis(10), true);
m.record_consume("t", Duration::from_millis(5), false);
}
}