use lapin::ExchangeKind;
use std::time::{SystemTime, UNIX_EPOCH};
pub fn default_exchange_for_kind(exchange_kind: &ExchangeKind) -> String {
match exchange_kind {
ExchangeKind::Direct => "amq.direct",
ExchangeKind::Topic => "amq.topic",
ExchangeKind::Fanout => "amq.fanout",
_ => "amq.direct",
}
.to_string()
}
pub fn generate_trace_id() -> String {
let timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis();
let random: u64 = rand::random();
format!("{:x}-{:x}", timestamp, random)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_generate_trace_id() {
let id1 = generate_trace_id();
let id2 = generate_trace_id();
assert!(!id1.is_empty());
assert!(!id2.is_empty());
assert_ne!(id1, id2);
assert!(id1.len() > 10);
}
}