6 个版本
0.1.0-alpha.6 | 2021 年 2 月 24 日 |
---|---|
0.1.0-alpha.2 | 2021 年 2 月 21 日 |
0.1.0-alpha.1 | 2021 年 2 月 19 日 |
在 异步 中排名第 1790
50KB
836 行
本 crate 是对 KSQL-DB REST API 的一种轻量级封装,使得 Rust 项目与 API 的交互更加便捷。在底层,它使用 reqwest 作为 HTTP 客户端与 API 交互。
该项目处于早期阶段,仍在开发中,所以如果您有任何功能或改进建议,请提出问题。同样,所有贡献都受欢迎。
直到 v0.2 版本发布,项目将 不会 遵循 semver。即后续的 v0.1-alpha
或 v0.1-beta
发布可能包含破坏性变更,这是为了在早期阶段给库的自由,以快速改进 API 设计。一旦发布 v0.2,项目将遵循 semver。
crate 是什么,不是什么
crate 是什么
- crate 的目的是提供一个与提供的 REST API 交互的便捷方式,这意味着已经为您创建了有用的抽象,如
futures::Stream
- 提供类型化的响应和错误,而不是在您的应用程序代码中处理响应解析
- 在性质上相当轻量级
这个 crate 不是什么 (目前)
- 它不是一个 DSL,也不打算解析 SQL 语句或编译时
快速入门
use reqwest::Client;
use ksqldb::KsqlDB;
use futures_util::stream::StreamExt;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct MyResponse {
id: String,
data: Vec<u32>
}
#[tokio::main]
async fn main() {
let ksql = KsqlDB::new("localhost:8080".into(), Client::builder(), false).unwrap();
let statement = r#"SHOW STREAMS EXTENDED;"#;
let response = ksql.list_streams(&statement, &Default::default(), None).await.unwrap();
println!("{:#?}", response);
let query = r#"SELECT * FROM MY_STREAM EMIT CHANGES;"#;
let mut stream = ksql.select::<MyResponse>(&query, &Default::default()).await.unwrap();
while let Some(data) = stream.next().await {
println!("{:#?}", data);
}
}
文档
最低支持版本
- 本 crate 将目前旨在支持 Rust 的最新
STABLE
版本 - 这个包将致力于与KSQL-DB的最新稳定版本保持同步(目前为v0.15)
依赖项
~4–21MB
~275K SLoC