Expand description
The Rust messaging framework for reliable event-driven services.
Hexeract is an opinionated messaging framework for Rust. It unifies in-process mediator dispatch, multi-broker bus transport and a transactional outbox in a single ergonomic crate. Sagas, scheduler and request/reply are planned for future releases (see ROADMAP.md).
This facade re-exports every shipped sub-crate behind opt-in feature flags so consumers only compile what they actually use.
§Quick start
Outbox over PostgreSQL:
[dependencies]
hexeract = { version = "0.5", features = ["outbox-sql-postgres"] }Bus over RabbitMQ:
[dependencies]
hexeract = { version = "0.5", features = ["bus-rabbitmq"] }Both together:
[dependencies]
hexeract = { version = "0.5", features = ["outbox-sql-postgres", "bus-rabbitmq"] }§Feature matrix
| Feature | Enables | Pulls |
|---|---|---|
core | Cross-cutting primitives (MessageId, CorrelationId, HandlerContext) | hexeract_core |
outbox | Backend-agnostic outbox traits | hexeract_outbox |
outbox-sql-postgres | PostgreSQL outbox backend via sqlx | hexeract_outbox + hexeract_outbox_sql |
outbox-sql-mysql | MySQL outbox backend via sqlx | hexeract_outbox + hexeract_outbox_sql |
outbox-sql-sqlite | SQLite outbox backend via sqlx | hexeract_outbox + hexeract_outbox_sql |
bus | Backend-agnostic bus traits | hexeract_bus |
bus-rabbitmq | RabbitMQ bus backend | hexeract_bus + hexeract_bus_rabbitmq |
mediator | In-process CQRS mediator | hexeract_mediator |
middleware | Built-in tracing and timeout middlewares | hexeract_middleware |
macros | #[handler] attribute macro for handler registration | hexeract_macros + hexeract_core |
Every feature transitively enables core, so a downstream user
automatically has access to hexeract::core::HandlerContext.
Re-exports§
pub use hexeract_core as core;corepub use hexeract_outbox as outbox;outboxpub use hexeract_outbox_sql as outbox_sql;outbox-sql-mysqloroutbox-sql-postgresoroutbox-sql-sqlitepub use hexeract_bus as bus;buspub use hexeract_bus_rabbitmq as bus_rabbitmq;bus-rabbitmqpub use hexeract_mediator as mediator;mediatorpub use hexeract_middleware as middleware;middlewarepub use hexeract_macros as macros;macros