This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Getting started with the Dapr client Rust SDK

How to get up and running with the Dapr Rust SDK

    The Dapr client package allows you to interact with other Dapr applications from a Rust application.

    Prerequisites

    Import the client package

    Add Dapr to your cargo.toml

    [dependencies]
    # Other dependencies
    dapr = "0.16.0"
    

    You can either reference dapr::Client or bind the full path to a new name as follows:

    use dapr::Client as DaprClient;
    

    Instantiating the Dapr client

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

    Alternatively if you would like to specify a custom port, this can be done by using this connect method:

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

    Building blocks

    The Rust SDK allows you to interface with the Dapr building blocks.

    Service Invocation (gRPC)

    To invoke a specific method on another service running with Dapr sidecar, the Dapr client provides two options:

    Invoke a (gRPC) service

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

    For a full guide on service invocation, visit How-To: Invoke a service.

    State Management

    The Dapr Client provides access to these state management methods: save_state , get_state, delete_state that can be used like so:

    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?;
    

    Multiple states can be sent with the save_bulk_states method.

    For a full guide on state management, visit How-To: Save & get state.

    Publish Messages

    To publish data onto a topic, the Dapr client provides a simple method:

    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?;
    

    For a full guide on pub/sub, visit How-To: Publish & subscribe.

    Rust SDK Examples