use std::time::Duration;
use tokio::time::sleep;
use weavegraph::event_bus::Event;
use weavegraph::runtimes::{EventBusConfig, SinkConfig};
#[tokio::main]
async fn main() {
let bus = EventBusConfig::new(2, vec![SinkConfig::Memory]).build_event_bus();
let emitter = bus.get_emitter();
let mut stream = bus.subscribe();
for i in 0..100 {
emitter
.emit(Event::diagnostic("flood", format!("msg {i}")))
.ok();
}
sleep(Duration::from_millis(10)).await;
while let Some(event) = stream.next_timeout(Duration::from_millis(50)).await {
println!("Received: {}", event.message());
}
let metrics = bus.metrics();
println!("Capacity: {}", metrics.capacity);
println!("Total dropped: {}", metrics.dropped);
}