#event-sourcing #cqrs #axon-server

dendrite

Event Sourcing and CQRS in Rust with AxonServer

13 releases (5 breaking)

0.6.0 May 9, 2021
0.5.0 May 3, 2021
0.4.3 Apr 6, 2021
0.4.2 Mar 21, 2021
0.1.3 Jan 16, 2021

#292 in Web programming

Download history 20/week @ 2021-04-01 34/week @ 2021-04-08 59/week @ 2021-04-15 9/week @ 2021-04-22 26/week @ 2021-04-29 41/week @ 2021-05-06 30/week @ 2021-05-13 4/week @ 2021-05-20 4/week @ 2021-05-27 9/week @ 2021-06-03 20/week @ 2021-06-10 3/week @ 2021-06-17 7/week @ 2021-06-24 4/week @ 2021-07-01 4/week @ 2021-07-08 30/week @ 2021-07-15

130 downloads per month
Used in dendrite_auth

MIT license

150KB
3K SLoC

Rustic Dendrite

A Rust library to connect to AxonServer.

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

Core concepts

More information

The project rustic-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

~7MB
~124K SLoC