rskit-component 0.1.0-alpha.1

Component lifecycle primitives: Component trait, Registry, Health, and State
Documentation

rskit-component — component lifecycle primitives

rskit-component defines the shared lifecycle contract used by services and infrastructure components: Component, ordered Registry, health reports, state tracking, registry configuration, and shutdown results.

Install

[dependencies]
rskit-component = "0.1.0-alpha.1"
rskit-errors = "0.1.0-alpha.1"
async-trait = "0.1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

Quick start

use async_trait::async_trait;
use std::sync::Arc;

use rskit_component::{Component, Health, Registry};
use rskit_errors::AppResult;

struct SearchIndexer;

#[async_trait]
impl Component for SearchIndexer {
    fn name(&self) -> &'static str {
        "search-indexer"
    }

    async fn start(&self) -> AppResult<()> {
        Ok(())
    }

    async fn stop(&self) -> AppResult<()> {
        Ok(())
    }

    async fn health(&self) -> AppResult<Health> {
        Ok(Health::healthy(self.name()))
    }
}

#[tokio::main]
async fn main() -> AppResult<()> {
    let mut registry = Registry::new();
    registry.register(Arc::new(SearchIndexer));
    registry.start_all().await?;
    registry.stop_all().await?;
    Ok(())
}

When to use

Use rskit-component when a type has explicit start, stop, and health semantics. Use rskit-bootstrap when you need full application lifecycle orchestration around a component registry.