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, a transactional outbox and a durable scheduler in a single ergonomic crate. Sagas and request/reply are planned for future releases (see the roadmap).
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.6", features = ["outbox-sql-postgres"] }Bus over RabbitMQ:
[dependencies]
hexeract = { version = "0.6", features = ["bus-rabbitmq"] }Both together:
[dependencies]
hexeract = { version = "0.6", 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 |
scheduler | Backend-agnostic scheduler traits and SchedulerBuilder | hexeract_scheduler |
scheduler-mediator | Scheduler sink that dispatches via the in-process mediator | hexeract_scheduler + mediator |
scheduler-bus | Scheduler sink that publishes via the message bus | hexeract_scheduler + bus |
scheduler-outbox | Scheduler sink that enqueues into the transactional outbox | hexeract_scheduler |
scheduler-sql-postgres | PostgreSQL schedule store via sqlx | hexeract_scheduler + hexeract_scheduler_sql |
scheduler-sql-mysql | MySQL schedule store via sqlx | hexeract_scheduler + hexeract_scheduler_sql |
scheduler-sql-sqlite | SQLite schedule store via sqlx | hexeract_scheduler + hexeract_scheduler_sql |
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;macrospub use hexeract_scheduler as scheduler;schedulerpub use hexeract_scheduler_sql as scheduler_sql;scheduler-sql-mysqlorscheduler-sql-postgresorscheduler-sql-sqlite