#event-sourcing #cqrs #axon-server

dendrite

Event Sourcing and CQRS in Rust with AxonServer

24 releases (13 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.4.2 Mar 21, 2021

#631 in Web programming

MIT license

115KB
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

~11–27MB
~435K SLoC