Crate caudal_sdk

Crate caudal_sdk 

Source
Expand description

§Caudal SDK

Observability SDK for event-driven distributed systems.

Caudal is an observability system that records and correlates events describing how a message flows through a distributed system.

§Features

  • Append-only: Only records events, never modifies them.
  • Event-only: Does not transport business payloads.
  • Asynchronous: Designed not to block production flows.
  • Idempotent: Safe for retries.
  • Production-safe: Never breaks the system using it.

§Basic Usage

use caudal_sdk::{
    FlowEventBuilder, CaudalEmitter,
    NodeType, FlowStage, FlowStatus, AckType,
};

// Create an event
let event = FlowEventBuilder::new("order-processing")
    .group_flow("siscom")
    .node("api-gateway", NodeType::Producer)
    .stage(FlowStage::Emit)
    .status(FlowStatus::Sent)
    .ack(AckType::Implicit)
    .payload_bytes(190)
    .output_bytes(210)
    .meta("endpoint", "/api/users")
    .meta("method", "POST")
    .build()?;

// Emit the event (requires a CaudalTransport implementation)
// let emitter = CaudalEmitter::new(my_transport);
// emitter.emit(event)?;

§Architecture

  • event: Definition of the FlowEvent v1 contract.
  • builder: Ergonomic builder for creating events.
  • transport: Abstract trait for transport backends.
  • emitter: Main component for emitting events.

Re-exports§

pub use builder::FlowEventBuilder;
pub use emitter::buffered::BufferedEmitter;
pub use emitter::CaudalEmitter;
pub use error::CaudalError;
pub use error::Result;
pub use event::AckInfo;
pub use event::AckType;
pub use event::FlowError;
pub use event::FlowEvent;
pub use event::FlowStage;
pub use event::FlowStatus;
pub use event::NodeType;
pub use transport::CaudalTransport;

Modules§

builder
Builder module
emitter
Emitter module
error
Error module
event
Event module
transport
Transport module