A Rust library to connect to AxonServer

This project has moved to dendrite2go and Command / Query Responsibility Segregation (CQRS)

Rustic Dendrite

A Rust library to connect to AxonServer.

This project has moved to dendrite2go/rustic-dendrite.

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

Core concepts

  • Command / Query Responsibility Segregation (CQRS)
  • Domain-driven Design (DDD)
  • Event Sourcing
  • Futures and async/await
  • gRPC
  • Microservices
  • Service Mesh (video: talk by Jeroen Reijn)

Stack

In alphabetic order:

  • Bash: The shell, or command language interpreter, for the GNU operating system — for building and deploying
  • AxonServer: A zero-configuration message router and event store for Axon (docker image) — Event Store
  • Docker compose: A tool for defining and running multi-container Docker applications — for spinning up development and test environments
  • ElasticSearch You know, for search — for query models (though any tokio-compatible persistence engine will do)
  • Envoy proxy: An open source edge and service proxy, designed for cloud-native applications (docker image) — to decouple microservices
  • React: A JavaScript library for building user interfaces — for the front-end
  • Rust: A language empowering everyone to build reliable and efficient software — for the back-end
  • Tonic: A Rust implementation of gRPC with first class support of async/await — for the plumbing on the back-end

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

The next task is to split off the example project from the library, and publish the library on crates.io.

After that:

  • Add macros to make the definition of handlers more ergonomic
  • Add in-memory caching of aggregate projections
  • 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.
  • ...

Information - Updated Jun 18, 2022

Stars: 2
Forks: 4
Issues: 5
IDE

3.5K

Rust Language Server (RLS)

The RLS provides a server that runs in the background, providing IDEs,

Rust Language Server (RLS)

rust-analyzer is a modular compiler frontend for the Rust language

It also contains some tips & tricks to help you be more productive when using rust-analyzer

rust-analyzer is a modular compiler frontend for the Rust language

Rust lang bookmarking tool

Rust and Rocket used bookmarking tool for search bar

Rust lang bookmarking tool

A study note of Rust language

The Rust Programming Language

A study note of Rust language

Rust Language Security

execrices: RUSTSEC-2021-0001

Rust Language Security

False Positive for rust-lang/rust#83583

The deprecation lint proc_macro_derive_resolution_fallback is intended to catch proc macro generated code that refers to items from parent modules that should not be in scope:

False Positive for rust-lang/rust#83583

rust_icu: low-level rust language bindings for the ICU library

See: The latest version of this file is available at

rust_icu: low-level rust language bindings for the ICU library

Classic Snake game written in Rust Lang

This is my first program/game in Rust Lang to measure myself and learn more

Classic Snake game written in Rust Lang

Rust lang exercises

Personal tips and drills in my journey as a beginner rustacean

Rust lang exercises
Facebook Instagram Twitter GitHub Dribbble
Privacy