event_base_middleware 0.1.0

An Event Driven Framework - Middleware Crate
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use async_trait::async_trait;
use event_base_core::handler::Ack;
use event_base_core::message::EMessage;
use event_base_core::middleware::{Middleware, Next};

pub struct LoggerMiddleware;

#[async_trait]
impl Middleware for LoggerMiddleware {
    async fn handle(&self, msg: &mut EMessage, next: Next<'_>) -> Ack {
        let start = std::time::Instant::now();
        tracing::debug!("[{}] Processing message: {}", msg.topic.0, msg.id);
        let ack = next.run(msg).await;
        tracing::debug!("[{}] Done in {:?}: {:?}", msg.topic.0, start.elapsed(), ack);
        ack
    }
}