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;