# EventBase
> <div style="text-align: center;">Stop wiring channels. Start orchestrating events.</div>
>
> **A type-safe, macro-driven event-driven framework for Rust applications.**
**What it is:**
`event_base` is a lightweight, macro-driven event-driven framework for building reliable, observable, and scalable applications in Rust. With `event_base`, you declare handlers, chain middleware, and define reliable workflowsβall at compile time.
**What it is not:**
event_base is not a distributed message queue. It does not transport data between services. I`event_base` focuses on **orchestrating events inside your application**: defining events, declaring handlers, managing state, and ensuring reliability.
## β¨ Features
- **π Type-safe events** β Define events as plain Rust structs. The compiler guarantees correctness.
- **π Pluggable backends** β `memory` (flume), `file`, `redis`, `kafka`, `mqtt`. Swap without changing your handlers.
- **β‘ Macro-driven DX** β `#[handler]` turns any async function into a message handler. No boilerplate.
- **π¦ Multiple delivery modes** β Standard (competing consumers), Broadcast (all workers), and Repeated (N times).
- **πΎ Application-level WAL** β Durable persistence with crash recovery. Your events survive restarts.
- **π Automatic retry & Dead Letter Queue** β Failed messages retry with configurable backoff, then land in DLQ.
- **π Built-in observability** β Audit logging (`_system.audit`) and distributed tracing (`_system.trace`) enabled by default.
- **π― Middleware support** β Compose logging, metrics, retries, and custom logic via middleware pipeline.
- **π Distributed-ready** β Host/Worker node model with built-in discovery and shutdown coordination.
- **π Graceful shutdown** β 7 shutdown strategies, including two-stage drain and force timeout.
- **π§© gRPC management API** β Query node status, list workers, trigger shutdown, stream metrics.