Client

Dapr 客户端包允许您从 Rust 应用程序与其他 Dapr 应用程序进行交互。

前置条件

导入客户端包

将 Dapr 添加到您的 cargo.toml

[dependencies]
dapr = "0.16"

您可以直接引用 dapr::Client 或将完整路径绑定到新名称,如下所示:

use dapr::Client as DaprClient;

实例化 Dapr 客户端

let addr = "https://127.0.0.1".to_string();

let mut client = dapr::Client::<dapr::client::TonicClient>::connect(addr,
port).await?;

或者,如果您想指定自定义端口,可以使用此 connect 方法:

let mut client = dapr::Client::<dapr::client::TonicClient>::connect_with_port(addr, "3500".to_string()).await?;

构建块

Rust SDK 允许您与 Dapr 构建块 进行交互。

服务调用 (gRPC)

要在运行 Dapr 边车的另一个服务上调用特定方法,Dapr 客户端提供两个选项:

调用 (gRPC) 服务

let response = client
    .invoke_service("service-to-invoke", "method-to-invoke", Some(data))
    .await
    .unwrap();

有关服务调用的完整指南,请访问如何操作:调用服务

状态管理

Dapr 客户端提供对这些状态管理方法的访问:save_stateget_statedelete_state,可以像这样使用:

let store_name = String::from("statestore");

let key = String::from("hello");
let val = String::from("world").into_bytes();

// save key-value pair in the state store
client
    .save_state(store_name, key, val, None, None, None)
    .await?;

let get_response = client
    .get_state("statestore", "hello", None)
    .await?;

// delete a value from the state store
client
    .delete_state("statestore", "hello", None)
    .await?;

可以使用 save_bulk_states 方法发送多个状态。

有关状态管理的完整指南,请访问如何操作:保存和获取状态

发布消息

要将数据发布到主题,Dapr 客户端提供了一个简单的方法:

let pubsub_name = "pubsub-name".to_string();
let pubsub_topic = "topic-name".to_string();
let pubsub_content_type = "text/plain".to_string();

let data = "content".to_string().into_bytes();
client
    .publish_event(pubsub_name, pubsub_topic, pubsub_content_type, data, None)
    .await?;

有关发布订阅的完整指南,请访问如何操作:发布和订阅

相关链接

Rust SDK 示例