1 个不稳定版本
0.2.0 | 2023 年 12 月 18 日 |
---|
#35 in #distributed-applications
在 2 crates 中使用
320KB
7K SLoC
AX SDK
AX 是一个去中心化的事件数据库,流式处理引擎,允许您轻松构建 本地优先合作 应用程序。它使得在多个节点上运行分布式应用程序变得容易。这是一款软件,允许您在自己的一个或多个边缘设备上运行应用程序,并且这些应用程序可以无缝地相互通信和共享数据。
注意: AX 是由公司 Actyx AG 创建的,早于无关的 Actix 框架(尽管 AX 直到 23 年 10 月才开源)。虽然我们已经更改了 crate 名称以避免混淆,但公司名称仍然是 Actyx AG,并出现在某些位置。
此 crate 定义了与 Actyx 通信所需的数据类型,并为 AX API 提供了 Rust 绑定。
示例
以下是一个使用 Ax
客户端检索一些事件的完整示例。请根据存储的事件调整查询的标签,以便查看输出。
use ax_sdk::{
Ax, AxOpts,
types::{
app_id, AppManifest,
service::{Order, QueryRequest, QueryResponse},
}
};
use futures::stream::StreamExt;
use url::Url;
#[tokio::main]
pub async fn main() -> anyhow::Result<()> {
// Add your app manifest, for brevity we will use one in trial mode
let manifest = AppManifest::trial(
app_id!("com.example.my-awesome-app"),
"display name".into(),
"0.1.0".into(),
).unwrap();
// Url of the locally running Actyx node
let url = Url::parse("https://127.0.0.1:4454")?;
// Create client for it
let service = Ax::new(AxOpts { url, manifest }).await?;
// all events matching the given subscription
// sorted backwards, i.e. youngest to oldest
let mut events = service
.query("FROM 'MyTag'")
.with_order(Order::Desc)
.await?;
// print out the payload of each event
// (cf. `Payload::extract` for more options)
while let Some(QueryResponse::Event(event)) = events.next().await {
println!("{}", event.payload.json_value());
}
Ok(())
}
功能标志
arb
: 为常见数据类型提供quickcheck::Arbitrary
实例。这对于测试很有用。
依赖项
~16–29MB
~465K SLoC