1个不稳定版本
0.0.1 | 2023年2月13日 |
---|
#39 在 #event-store
1,681 每月下载量
在 3 个crate中(通过 eventstore)使用
5KB
94 行
EventStoreDB Rust客户端
官方Rust EventStoreDB rust gRPC gRPC客户端。
EventStoreDB 是一个事件原生的数据库,其中业务事件被不可变地存储和流式传输。适用于事件源、事件驱动和微服务架构。
EventStoreDB服务器兼容性
此客户端与版本 20.6.1
及以上兼容,并在Linux、MacOS和Windows上运行。
服务器设置说明请在此处找到 EventStoreDB 文档,遵循docker设置以获得最简单的配置。
示例
use eventstore::{ 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 EventStoreDB
// 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(())
}
支持
支持信息请在此处查看: EventStoreDB 支持
文档
EventStoreDB的文档请在此处查看: EventStoreDB 文档
请注意,此客户端尚未得到适当文档。我们正在努力为新版本的文档工作。
社区
依赖项
~1.5MB
~35K SLoC