Skip to main content

Crate aion_worker

Crate aion_worker 

Source
Expand description

Rust remote-worker SDK for executing Aion activities over gRPC.

The SDK registers typed activity handlers, receives pushed tasks from an aion-server, executes them out-of-process, reports results, and sends heartbeats for long-running work.

§Example

use aion_worker::{ActivityContext, HandlerFuture, Worker, WorkerConfig};
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
struct Input { name: String }

#[derive(Serialize)]
struct Output { message: String }

fn greet(input: Input, _context: &ActivityContext) -> HandlerFuture<'_, Output> {
    Box::pin(async move { Ok(Output { message: format!("hello, {}", input.name) }) })
}

let config = WorkerConfig::builder()
    .endpoint("http://127.0.0.1:50051")
    .task_queue("default")
    .identity("rust-worker-1")
    .max_concurrency(4)
    .reconnect_initial_backoff(std::time::Duration::from_millis(500))
    .reconnect_max_backoff(std::time::Duration::from_secs(5))
    .reconnect_max_attempts(10)
    .build()?;

Worker::builder(config)
    .register_activity("examples.greet", greet)?
    .build()?
    .run()
    .await?;

Re-exports§

pub use activity::ActivityFailure;
pub use activity::ActivityRegistry;
pub use activity::Classification;
pub use activity::DuplicateActivityType;
pub use activity::HandlerFuture;
pub use config::ReconnectConfig;
pub use config::TransportCredentials;
pub use config::WorkerConfig;
pub use config::WorkerConfigBuildError;
pub use config::WorkerConfigBuilder;
pub use context::ActivityCancellationHandle;
pub use context::ActivityContext;
pub use context::HeartbeatRequest;
pub use error::MissingActivityHandler;
pub use error::WorkerError;
pub use protocol::ActivityTask;
pub use protocol::GrpcWorkerSession;
pub use protocol::PendingActivityReport;
pub use protocol::ReconnectBackoff;
pub use protocol::RegisteredSessionInfo;
pub use protocol::UnackedResultTracker;
pub use protocol::WorkerSession;
pub use protocol::WorkerSessionEvent;
pub use protocol::WorkerTaskStream;
pub use protocol::connect_registered_grpc_session;
pub use protocol::re_report_unacked;
pub use protocol::reconnect_with_backoff;
pub use protocol::reconnect_with_sleep;
pub use protocol::register_connected_session;
pub use protocol::validate_activity_handlers;
pub use runtime::ActivityDispatcher;
pub use runtime::DispatchOutcome;
pub use runtime::NoShutdown;
pub use runtime::ServeEnd;
pub use runtime::SessionHealth;
pub use runtime::TypedActivityDispatcher;
pub use runtime::decode_payload;
pub use runtime::encode_payload;
pub use runtime::serve_activity_tasks;
pub use runtime::serve_activity_tasks_until;
pub use worker::EmptyActivitySet;
pub use worker::Worker;
pub use worker::WorkerBuilder;
pub use worker::run_worker_with_session;

Modules§

activity
Typed activity registration and failure classification. Activity trait, ActivityFailure, and typed registration.
config
Worker endpoint, identity, transport, and reconnect configuration. WorkerConfig endpoint, task queue, identity, concurrency, and TLS/credentials passthrough.
context
Per-activity execution context, heartbeat, and cancellation handles. ActivityContext heartbeat, cancellation, attempt, and identifier support.
error
Worker runtime and configuration errors. WorkerError taxonomy.
protocol
Worker-session protocol abstractions and task types. Worker protocol session declarations and public protocol types.
runtime
Activity dispatch and task-serving loops. Worker activity dispatch runtime support.
worker
High-level worker builder and run loop. Worker builder, run loop, and shutdown wiring.