squads-temporal-sdk 0.1.0-alpha.1

Temporal Rust SDK
Documentation

This crate defines an alpha-stage Temporal Rust SDK.

Currently defining activities and running an activity-only worker is the most stable code. Workflow definitions exist and running a workflow worker works, but the API is still very unstable.

An example of running an activity worker:

use std::{str::FromStr, sync::Arc};
use temporal_sdk::{sdk_client_options, ActContext, Worker};
use squads_temporal_sdk_core::{init_worker, Url, CoreRuntime};
use squads_temporal_sdk_core_api::{
    worker::{WorkerConfigBuilder, WorkerVersioningStrategy},
    telemetry::TelemetryOptionsBuilder
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let server_options = sdk_client_options(Url::from_str("http://localhost:7233")?).build()?;

    let client = server_options.connect("default", None).await?;

    let telemetry_options = TelemetryOptionsBuilder::default().build()?;
    let runtime = CoreRuntime::new_assume_tokio(telemetry_options)?;

    let worker_config = WorkerConfigBuilder::default()
        .namespace("default")
        .task_queue("task_queue")
        .versioning_strategy(WorkerVersioningStrategy::None { build_id: "rust-sdk".to_owned() })
        .build()?;

    let core_worker = init_worker(&runtime, worker_config, client)?;

    let mut worker = Worker::new_from_core(Arc::new(core_worker), "task_queue");
    worker.register_activity(
        "echo_activity",
        |_ctx: ActContext, echo_me: String| async move { Ok(echo_me) },
    );

    worker.run().await?;

    Ok(())
}