#event-sourcing #cqrs #axon-server

dendrite_lib

Event Sourcing and CQRS in Rust with AxonServer

9 releases (breaking)

0.14.1 Jan 24, 2024
0.13.0 Nov 11, 2023
0.12.0 Nov 21, 2022
0.10.1 Jan 18, 2022
0.7.0 Dec 3, 2021

#27 in #cqrs


Used in 4 crates

MIT license

98KB
2.5K SLoC

Dendrite

A Rust library to connect to AxonServer.

See the GitHub project rustigaan/archetype-rust-axon for an example of how to use this code.

Core concepts

More information

The crate dendrite-macros provides macros that makes working with the dendrite crate more ergonomic.

This project is a sibling of dendrite2go and archetype-go-axon, but for the Rust programming language.

Status

This project has now reached the level of Minimal Viable Deliverable in the sense that the first phase is completed: the current application communicates with AxonServer properly. Like archetype-go-axon it can do the following:

  1. ☑ Set up a session with AxonServer
    • ☑ Enable React app to call a RPC endpoint on the example-command-api service through grpc-web
  2. ☑ Issue commands
  3. ☑ Register a command handler and handle commands
  4. ☑ Submit events
    • ☑ Stream events to UI
  5. ☑ Retrieve the events for an aggregate and build a projection
    • ☑ Validate commands against the projection
  6. ☑ Register a tracking event processor and handle events
  7. ☑ Store records in a query model: Elastic Search
    • ☑ Store tracking token in Elastic Search
  8. ☑ Register a query handler and handle queries
    • ☑ Show query results in UI

As well as:

  • In-memory caching of aggregate projections
  • Access to Axon Command-, Event-, QueryRequest-message in body of handlers.

Now it would be nice to:

  • Add support for storing snapshots of aggregate projections in AxonServer.
  • Add support for segmentation to distribute the load on tracking event processors.
  • Add support for sagas.
  • ...

Dependencies

~10–19MB
~255K SLoC