3 releases
Uses new Rust 2024
1.0.0-alpha.3 | Mar 25, 2025 |
---|---|
1.0.0-alpha.2 | Mar 19, 2025 |
1.0.0-alpha.1 | Feb 27, 2025 |
#1535 in Database interfaces
330 downloads per month
470KB
11K
SLoC
KurrentDB Rust Client
Official Rust KurrentDB rust gRPC gRPC Client.
KurrentDB is the event-native database, where business events are immutably stored and streamed. Designed for event-sourced, event-driven, and microservices architectures.
KurrentDB Server Compatibility
This client is compatible with version 20.6.1
upwards and works on Linux, MacOS and Windows.
Server setup instructions can be found here KurrentDB Docs, follow the docker setup for the simplest configuration.
Example
use kurrentdb::{ Client, EventData };
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug)]
struct Foo {
is_rust_a_nice_language: bool,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Creates a client settings for a single node configuration.
let settings = "kurrentdb://admin:changeit@localhost:2113".parse()?;
let client = Client::new(settings)?;
let payload = Foo {
is_rust_a_nice_language: true,
};
// It is not mandatory to use JSON as a data format however KurrentDB
// provides great additional value if you do so.
let evt = EventData::json("language-poll", &payload)?;
client
.append_to_stream("language-stream", &Default::default(), evt)
.await?;
let mut stream = client
.read_stream("language-stream", &Default::default())
.await?;
while let Some(event) = stream.next().await? {
let event = event.get_original_event()
.as_json::<Foo>()?;
// Do something productive with the result.
println!("{:?}", event);
}
Ok(())
}
Support
Information on support can be found here: KurrentDB Support
Documentation
Documentation for KurrentDB can be found here: KurrentDB Docs
Bear in mind that this client is not yet properly documented. We are working hard on a new version of the documentation.
Communities
Dependencies
~21–35MB
~630K SLoC