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.
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.
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 = "esdb://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(())
}
Information on support can be found here: [KurrentDB Support]
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.