Skip to main content

Client SDKs

Angzarr provides client libraries for multiple languages, enabling polyglot teams to build event-sourced applications using their preferred language.

Supported Languages

LanguagePackageStatus
Rustangzarr-clientProduction
Gogithub.com/benjaminabbitt/angzarr/client/goProduction
Pythonangzarr-clientProduction
Javadev.angzarr:angzarr-clientProduction
C#Angzarr.ClientProduction
C++angzarr-clientProduction

Installation

[dependencies]
angzarr-client = "0.1"

Quick Start

Connect to an aggregate coordinator and send a command:

use angzarr_client::DomainClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = DomainClient::connect("http://localhost:1310").await?;

let response = client.aggregate.handle(command).await?;

Ok(())
}

Client Types

All SDKs provide the same set of client types:

ClientPurpose
QueryClientQuery events from aggregates
AggregateClientSend commands to aggregates
SpeculativeClientDry-run commands without persistence
DomainClientCombined query + aggregate for a domain
ClientFull client with all capabilities

SDK Contents

Language-Specific Documentation

Each SDK has its own detailed documentation:

LanguageDocumentation
Rust/sdk/rust
Go/sdk/go
Python/sdk/python
Java/sdk/java
C#/sdk/csharp
C++/sdk/cpp