Skip to main content

Crate hexeract

Crate hexeract 

Source
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

FeatureEnablesPulls
coreCross-cutting primitives (MessageId, CorrelationId, HandlerContext)hexeract_core
outboxBackend-agnostic outbox traitshexeract_outbox
outbox-sql-postgresPostgreSQL outbox backend via sqlxhexeract_outbox + hexeract_outbox_sql
outbox-sql-mysqlMySQL outbox backend via sqlxhexeract_outbox + hexeract_outbox_sql
outbox-sql-sqliteSQLite outbox backend via sqlxhexeract_outbox + hexeract_outbox_sql
busBackend-agnostic bus traitshexeract_bus
bus-rabbitmqRabbitMQ bus backendhexeract_bus + hexeract_bus_rabbitmq
mediatorIn-process CQRS mediatorhexeract_mediator
middlewareBuilt-in tracing and timeout middlewareshexeract_middleware
macros#[handler] attribute macro for handler registrationhexeract_macros + hexeract_core
schedulerBackend-agnostic scheduler traits and SchedulerBuilderhexeract_scheduler
scheduler-mediatorScheduler sink that dispatches via the in-process mediatorhexeract_scheduler + mediator
scheduler-busScheduler sink that publishes via the message bushexeract_scheduler + bus
scheduler-outboxScheduler sink that enqueues into the transactional outboxhexeract_scheduler
scheduler-sql-postgresPostgreSQL schedule store via sqlxhexeract_scheduler + hexeract_scheduler_sql
scheduler-sql-mysqlMySQL schedule store via sqlxhexeract_scheduler + hexeract_scheduler_sql
scheduler-sql-sqliteSQLite schedule store via sqlxhexeract_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;core
pub use hexeract_outbox as outbox;outbox
pub use hexeract_outbox_sql as outbox_sql;outbox-sql-mysql or outbox-sql-postgres or outbox-sql-sqlite
pub use hexeract_bus as bus;bus
pub use hexeract_bus_rabbitmq as bus_rabbitmq;bus-rabbitmq
pub use hexeract_mediator as mediator;mediator
pub use hexeract_middleware as middleware;middleware
pub use hexeract_macros as macros;macros
pub use hexeract_scheduler as scheduler;scheduler
pub use hexeract_scheduler_sql as scheduler_sql;scheduler-sql-mysql or scheduler-sql-postgres or scheduler-sql-sqlite